Vulnerability in EPiServer.Forms
Short answer: No.
Long answer:FindPagesWithCriteria will do one database request per criteria (and possibly language) you provide to get the a PageReference to every page that matches the query. Then it calls GetPage on datafactory for each reference returned. This will of course be cached, so a second query could be significantly faster than a first one that returns uncached pages. So to summarize, each page is cached but the query itself isn't.
Thanks for the quick reply.
So if I want to speed things up I could cache the result in a key based on the query for example? What should I cache - the PageDataCollection or an array of PageReferences or ID:s? I mean - if I cache the PageDataCollection, will that mean that I duplicate the data cached by DataFactory for each PageData object?
I would say have a look at the CacheFramework on EPiCode https://www.coderesort.com/p/epicode/wiki/CacheFramework for an implementation.