EPiServer page providers are a provider based model for using a custom database to handle pages with.
Important!
Sense the API for the page provider concept doesn’t describe the whole functionality it is extremely hard to write a page provider that should replace EPiserver local page provider – so don’t replace it for performance issues (EPiserver CMS 6 has no problem of handling 10’000’000 normal articles). Only use the page provider concept for more specific tasks.
Caching
Sense the page provider is used by the DataFactory that caches page data, the page data will be cached twice if your custom page provider deliver pages from local page providers. Johan has written a blog post about it:
PageProvider - Control the page cache Cache time
Cache time for page data objects are set by the configuration key "remotePageCacheSlidingExpiration"
<configuration>
<episerver...>
<sites>
<site siteId="MyEPiServer" description="MyEPiServer ">
<siteSettings
...
remotePageCacheSlidingExpiration="12:0:0"
Optimization
Order of PageProviders in Web.config
When trying to find a page data for a certain GUID, EPiServer will ask each page provider if it has the page. The ordering of querying of page providers are the same as it given in the <pageProvider> section in web.config (with the standard page provider last). Guids will be cached but to avoid make unnecessary database calls I suggest that the page providers are ordered by the number of pages for each page provider (and of cause locate slow page provider last in the list).
Versioning
The save method is complex to implement, and if it handles the versioning in a different way than EPiServers local page provider it’s not possible to ensure that it going to work with all code written to work with the local page provider (I haven’t seen any page provider that implement versioning in exact the same way as EPiServer local page provider yet). One way of solving this is to following the PageData gaph Mattias writes about in his blog
Version state graph of a PageData objectPage provider initialization prototype for EPiServer CMS 5 R2