{ "info": { "author": "Mauro Amico", "author_email": "mauro.amico@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Plone", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "collective.purgebyid\n====================\n\n\n.. image:: https://travis-ci.org/collective/collective.purgebyid.svg?branch=master\n :alt: Travis CI badge\n :target: http://travis-ci.org/collective/collective.purgebyid\n\n\ncollective.purgbyid is a new method for cache invalidation of Plone\nbased web sites. It uses the idea of adding an extra header, called\nX-Ids-Involved, which contains thee uuids of the objects involved in the\nconstruction of the resources. For example, an image contains just its\nuuid::\n\n % wget -S http://localhost:8080/Plone/image01\n ...\n X-Ids-Involved: #c8d7c0bc2b794325b916d990de91d7ee#\n\nOther pages may be more complicated. Then a new purge rewrite rule adds\na custom URL to the set of URLs to purge: the \"purge by id\" custom URL\nis in the form /@@purgebyid/ where UUID is the object's uuid to be\npurged.\n\nLast, Varnish is configured so that, when an URL /@@purgebyid/ is\npurged, it will ban all the objects that match an X-Ids-Involved header\nof the right type (i.e. containing the uuid of the resource to purge).\nThis means that when a resources is purged, it is enough to purge also\nit /@@purgebyid/ URL because it will be Varnish responsibily to\nalso catch all of the occurrencies of the resources whenever the URL\nwhich is used to access it. \n\nVarnish\n-------\n\nConfig example::\n\n sub vcl_recv {\n if (req.request == \"PURGE\") {\n if (!client.ip ~ purge) {\n error 405 \"Not allowed.\";\n }\n if (req.url ~ \"^/@@purgebyid/\") {\n ban(\"obj.http.x-ids-involved ~ #\" + regsub(req.url, \"^/@@purgebyid/\", \"\") + \"#\");\n error 200 \"Ban added\";\n }\n }\n }\n\n sub vcl_deliver {\n unset resp.http.x-ids-involved;\n }\n\n\nReferences\n----------\n\n* Blog post http://www.biodec.com/it/blog/migliorare-la-gestione-del-purge-caching-in-plone-collective-purgebyid (italian language) \n\nContributors\n============\n\nMauro Amico, Author\n\nChangelog\n=========\n\n1.1.1 (2019-06-05)\n------------------\n\n- Python 3 support \n [mamico]\n\n\n1.1.0 (2018-05-14)\n------------------\n- moved headers mutator from PubSuccess event to plone.transformchain.\n fix missing header using p.a.caching's ramcache operations #2\n [mamico]\n- added IIDinvolved adapter for easy implements \"involved id\" extractors\n [mamico]\n- manage resourcedirectory, because previously all resources were marked as \"involved\" by\n navigation root\n [mamico]\n- fix issue where IUUID-adaptation did not have default value\n [datakurre]\n\n\n1.0.0 (2016-01-14)\n------------------\n\n- use zope.annotation on request\n [mamico]\n- unused generic setup profile removed\n [mamico]\n\n1.0.0a1 (2013-09-11)\n--------------------\n\n- Package created using templer\n [Mauro Amico]", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/collective/collective.purgebyid", "keywords": "plone caching", "license": "gpl", "maintainer": "", "maintainer_email": "", "name": "collective.purgebyid", "package_url": "https://pypi.org/project/collective.purgebyid/", "platform": "", "project_url": "https://pypi.org/project/collective.purgebyid/", "project_urls": { "Homepage": "https://github.com/collective/collective.purgebyid" }, "release_url": "https://pypi.org/project/collective.purgebyid/1.1.1/", "requires_dist": null, "requires_python": "", "summary": "p.a.caching add-on for a better purging policy", "version": "1.1.1" }, "last_serial": 5360346, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "fd13721f52e74a2f1035dd097418be2e", "sha256": "3bfd63b702b78efedb26c401abef50ce5015e84153de3e62c1fb67fc1e9c65d2" }, "downloads": -1, "filename": "collective.purgebyid-1.0.0.zip", "has_sig": false, "md5_digest": "fd13721f52e74a2f1035dd097418be2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19575, "upload_time": "2016-01-14T15:18:58", "url": "https://files.pythonhosted.org/packages/98/68/7260a3e780fdc569080b4117059ae2af23b03453f5fc477f3a23d4d83731/collective.purgebyid-1.0.0.zip" } ], "1.0.0a1": [ { "comment_text": "", "digests": { "md5": "4bc06d6a2bab71c30f8800f1446ba4aa", "sha256": "99de16520de7d111985878acf2838f2f036aa3de816d27475f4bd02f8377d228" }, "downloads": -1, "filename": "collective.purgebyid-1.0.0a1.zip", "has_sig": false, "md5_digest": "4bc06d6a2bab71c30f8800f1446ba4aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20967, "upload_time": "2013-09-11T18:33:04", "url": "https://files.pythonhosted.org/packages/54/eb/57ed51b1167f7f416009f4c8b41cb1ac49eb9253a10fe7d08306f187e87f/collective.purgebyid-1.0.0a1.zip" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "ed78b6d4be2c6ef25006aa13d1da5c9b", "sha256": "29f0cbaf773cbf7b154c234e58decc2b7ef0fc402fedd5364d7679a3b8c7c503" }, "downloads": -1, "filename": "collective.purgebyid-1.1.0.tar.gz", "has_sig": false, "md5_digest": "ed78b6d4be2c6ef25006aa13d1da5c9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13097, "upload_time": "2018-05-13T23:46:41", "url": "https://files.pythonhosted.org/packages/92/ef/24cd7940dde8c643f4fe1ff9966387e4c8afdf659824ca6d676fdb3c28bf/collective.purgebyid-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "6f22976a757696cada9b496c9cf0ca6d", "sha256": "3c159f2ca266ec95d5546a8d5289cca007b87e6751aaf64112e8f9925db3fd32" }, "downloads": -1, "filename": "collective.purgebyid-1.1.1.tar.gz", "has_sig": false, "md5_digest": "6f22976a757696cada9b496c9cf0ca6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15581, "upload_time": "2019-06-05T01:14:16", "url": "https://files.pythonhosted.org/packages/09/d6/e795900e92d9ff7635c18f1062a4ef50bf29073669bab285c56827626e7c/collective.purgebyid-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6f22976a757696cada9b496c9cf0ca6d", "sha256": "3c159f2ca266ec95d5546a8d5289cca007b87e6751aaf64112e8f9925db3fd32" }, "downloads": -1, "filename": "collective.purgebyid-1.1.1.tar.gz", "has_sig": false, "md5_digest": "6f22976a757696cada9b496c9cf0ca6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15581, "upload_time": "2019-06-05T01:14:16", "url": "https://files.pythonhosted.org/packages/09/d6/e795900e92d9ff7635c18f1062a4ef50bf29073669bab285c56827626e7c/collective.purgebyid-1.1.1.tar.gz" } ] }