I'm wondering what people are doing in terms of the title in their solutions.
I've been tasked with improving our caching config to better SEO the site (from a page load speed POV) and I'm trying to wrap my head around a suitable way forward without screwing everything up :)
We're on DXC running CMS v11.11 right now, we've got static content and assets being cached at the CDN (with versioning to provide the cache invalidation), but the last piece of the puzzle I believe will be the page level caching. I'm given the understanding that this page level caching, or lack thereof, is holding the site back to really experiencing the gains that the other caching should be providing.
I've read through EPiServer's DXC training material (coursebook v17.10 so it's a little dated) and that points to David's DonutCaching blog and then Jon's version for EPiServer. Both of which go back a little further - there are comments on this blog that a VisitorGroup method in David's approach is deprecated.
So yeah, has anyone implemented a robust solution which caches the html responses but also works with visitor groups and a/b tests?
I have written a long time ago about an approach to enable output caching on a site that uses Visitor Groups:
I don't know of anyone who has used this in real life but I would interested to hear your feedback if you decide to give it a go.
A/B testing is another story but was discussed in the comments on the blog above.
Before wrapping pages and blocks in output caching, I always recommend a good round of code profiling (sometimes even memory profiling). You will probably be surprised.
In past projects I have substantially improved the time-to-first-byte of pages. Just by optimizing the backend code. So that’s my recommendation.
That being said, I have done some experimental (not officially supported) output caching of WebAPI responses on the CDN edge, while supporting simple personalization (based on client geography and HTTP headers).
So these things can be done. However that site did not do A/B testing. But, you know, everything is possible. 😉