Currently, we have two large WordPress Multisite/Network installs that we use to power most of our organization's web presence. They are currently routed through our BIP-IP, SSL terminated, and then load balanced to our various web boxes. In our current architecture, each web box has Varnish on it for web application acceleration, and then passes requests to Apache, as needed. This causes some issues for us related to one user seeing one cached version, another user seeing a different cached version, etc. After doing some research, it seems like using the BIG-IP to handle caching wouldn't be extremely difficult, and would help us to consolidate the web application acceleration layer of the stack. The only real hurdle that I've seen is cache invalidation, which could be a major problem for us.
Since WordPress Multisite/Network hosts multiple sites on the same WordPress install, all traffic is routed through the same profile, so if we invalidate the entire cache, we're going to kill the cache for every site on the network. While it seems that pattern matching is possible, it doesn't appear that can be accomplished programmatically. The end goal would be to offer something to users along the same lines of what we currently operate with, which is a WordPress plugin that sends a request that invalidates a portion of the cache for that specific site. For example, if a user is coming from site1.wordpress.example.com and needs to invalidate the cache for their site, the goal would be to only expire content from their site (site1.wordpress.example.com) and leave cached content from other users (site2.wordpress.example.com) untouched. I've done digging through the documentation, and I haven't yet found anything that really meets this need. Does anyone have experience with doing something along these lines or have any recommendation as to how to accomplish this goal? Any help would be greatly appreciated.
i assume you use one virtual server for all word press sites? because else you can attach different caching profiles to different virtual servers.
if it is one virtual server then you can might be able (no 100% sure, would need some testing) to use local trafic policy to select different profiles based on Host header. the following article points out part of this solution: