p.a.caching add-on for a better purging policy
Project description
collective.purgebyid
collective.purgbyid is a new method for cache invalidation of Plone based web sites. It uses the idea of adding an extra header, called X-Ids-Involved, which contains thee uuids of the objects involved in the construction of the resources. For example, an image contains just its uuid:
% wget -S http://localhost:8080/Plone/image01 ... X-Ids-Involved: #c8d7c0bc2b794325b916d990de91d7ee#
Other pages may be more complicated. Then a new purge rewrite rule adds a custom URL to the set of URLs to purge: the “purge by id” custom URL is in the form /@@purgebyid/<UUID> where UUID is the object’s uuid to be purged.
Last, Varnish is configured so that, when an URL /@@purgebyid/<UUID> is purged, it will ban all the objects that match an X-Ids-Involved header of the right type (i.e. containing the uuid of the resource to purge). This means that when a resources is purged, it is enough to purge also it /@@purgebyid/<UUID> URL because it will be Varnish responsibily to also catch all of the occurrencies of the resources whenever the URL which is used to access it.
Varnish
Config example:
sub vcl_recv { if (req.request == "PURGE") { if (!client.ip ~ purge) { error 405 "Not allowed."; } if (req.url ~ "^/@@purgebyid/") { ban("obj.http.x-ids-involved ~ #" + regsub(req.url, "^/@@purgebyid/", "") + "#"); error 200 "Ban added"; } } } sub vcl_deliver { unset resp.http.x-ids-involved; }
References
Blog post http://www.biodec.com/it/blog/migliorare-la-gestione-del-purge-caching-in-plone-collective-purgebyid (italian language)
Contributors
Mauro Amico, Author
Changelog
1.1.0 (2018-05-14)
moved headers mutator from PubSuccess event to plone.transformchain. fix missing header using p.a.caching’s ramcache operations #2 [mamico]
added IIDinvolved adapter for easy implements “involved id” extractors [mamico]
manage resourcedirectory, because previously all resources were marked as “involved” by navigation root [mamico]
fix issue where IUUID-adaptation did not have default value [datakurre]
1.0.0 (2016-01-14)
use zope.annotation on request [mamico]
unused generic setup profile removed [mamico]
1.0.0a1 (2013-09-11)
Package created using templer [Mauro Amico]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for collective.purgebyid-1.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29f0cbaf773cbf7b154c234e58decc2b7ef0fc402fedd5364d7679a3b8c7c503 |
|
MD5 | ed78b6d4be2c6ef25006aa13d1da5c9b |
|
BLAKE2b-256 | 92ef24cd7940dde8c643f4fe1ff9966387e4c8afdf659824ca6d676fdb3c28bf |