Composite views

A composite view is just a general term for most page views you see when you visit a Plone site. It includes all content item views, content folder views, and many template views. For our purposes, the distinguishing characteristic of composite views is the difficulty inherent in keeping track of all changes that might affect the final composited view. Because of the difficulty of dependancy tracking, composite views are often notoriously difficult to purge reliably from caching proxies so the default caching profiles set headers which expire the cache immediately (i.e. weak caching).

However, most of the inline resources linked to from the composite view (css, javascript, images, etc.) can be cached very well in proxy so the overall speed of most composite views will always be better with a caching proxy in front despite the page itself not being cached.

Also, when using Squid as a caching proxy, we can still see some additional speed improvement as Squid supports conditional requests to the backend and 304 responses from plone.app.caching are relatively quick. This means that even though the proxy cache will expire immediately, Squid can revalidate its cache relatively quickly. Varnish does not currently support conditional requests to the backend.

For relatively stable composite views or for those views for which you can tolerate some potential staleness, you might be tempted to try switching from weak caching to moderate caching with the s-maxage expiration value set to some tolerable value but first make sure you understand the issues regarding “split view” caching (see below).