plone.app.caching


Nameplone.app.caching JSON
Version 4.0.0 PyPI version JSON
download
home_pagehttps://github.com/plone/plone.app.caching
SummaryPlone UI and default rules for plone.caching/z3c.caching
upload_time2024-09-24 16:38:32
maintainerNone
docs_urlhttps://pythonhosted.org/plone.app.caching/
authorPlone Foundation
requires_python>=3.8
licenseGPL version 2
keywords plone caching
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
<p align="center">
    <img alt="Plone Logo" width="200px" src="https://raw.githubusercontent.com/plone/.github/main/plone-logo.png">
</p>

<h1 align="center">
  plone.app.caching
</h1>

<div align="center">

[![PyPI - Wheel](https://img.shields.io/pypi/wheel/plone.app.caching)](https://pypi.org/project/plone.app.caching/)
[![PyPI - License](https://img.shields.io/pypi/l/plone.app.caching)](https://pypi.org/project/plone.app.caching/)
[![PyPI - Status](https://img.shields.io/pypi/status/plone.app.caching)](https://pypi.org/project/plone.app.caching/)

[![GitHub contributors](https://img.shields.io/github/contributors/plone/plone.app.caching)](https://github.com/plone/plone.app.caching)
![GitHub Repo stars](https://img.shields.io/github/stars/plone/plone.app.caching?style=flat-square)

</div>

## Introduction

This package provides a Plone UI and default rules for managing HTTP response caching in Plone.
It builds on [z3c.caching](https://github.com/zopefoundation/z3c.caching), [plone.caching](https://github.com/plone/plone.caching) and [plone.cachepurging](https://github.com/plone/plone.cachepurging).


### Compatibility

| Version | Plone |
|------|-----|
| 3.x | 6.0 or above |
| 2.x | 5.2 |
| 1.x | 5.1, 5.0, 4.3, 4.2, 4.1 |


## Installation

`plone.app.caching` is shipped as a dependency of the *Plone* package, and it should be available on all Plone installations, but
Caching is **not enabled by default**, although it is highly recommended to configure caching for every new Plone site.

After creating a new Plone site, go to `Site Setup`, then `Addons` and install `HTTP caching support`.

Under the Advanced header, look for the Caching control panel -- currently only supported on the Classic UI.

### Troubleshooting

When the Caching control panel is not there, there can be various reasons for this:

- If your installation does not load the `Plone` package, but only `Products.CMFPlone`, then `plone.app.caching` is not included.
- If the package *is* included, but you add a Plone Site using the advanced form and disable caching, then the control panel is not there.

If you want to install it in an existing Plone Site:

1. Make sure the package is available in the Plone instance, by adding `plone.app.caching` or `Plone` to your installation.
2. From the Plone Site Setup go to the ZMI (Zope Management Interface).
3. Go to ``portal_setup``, and then to the Import tab.
4. Select the HTTP caching support profile, perhaps easiest by id: `profile-plone.app.caching:default`.
5. Click 'Import all steps'.


## Source Code

Contributors, please read the document [Process for Plone core's development](https://5.docs.plone.org/develop/coredev/docs/index.html)

Sources are at the [Plone code repository hosted at Github ](https://github.com/plone/plone.app.caching).

## This project is supported by

<a href="https://plone.org/foundation/">
    <img alt="Plone Logo" width="200px" src="https://raw.githubusercontent.com/plone/.github/main/plone-foundation.png">
</a>

## License

The project is licensed under GPLv2.


# Changelog

<!--
   You should *NOT* be adding new change log entries to this file.
   You should create a file in the news directory instead.
   For helpful instructions, please see:
   https://github.com/plone/plone.releaser/blob/master/ADD-A-NEWS-ITEM.rst
-->

<!-- towncrier release notes start -->

## 4.0.0 (2024-09-24)


### Breaking changes:

- Replace `plone.app.caching` import step with a post handler.
  Removed the `plone.app.caching.txt` Generic Setup flag file that was needed by the import step.
  [maurits] #139


### New features:

- Add uninstall profile.
  [maurits] #139

## 3.1.5 (2024-06-26)


### Bug fixes:

- Add Zope to dependencies.  Update config files with plone/meta.
  [maurits] #1

## 3.1.4 (2024-02-12)


### Bug fixes:

- Fix purging of image scale paths for Dexterity content.
  [erral] #136


### Internal:

- Update configuration files.
  [plone devs] cfffba8c

## 3.1.3 (2023-10-25)


### Bug fixes:

- Fix `locked` component of ETag to discriminate between different locks. @JeffersonBledsoe, @davisagli #122


## 3.1.2 (2023-06-16)


### Internal:

- Update configuration files.
  [plone devs] e08b1234, fb4615d7


### Tests

- Fixed tests that compared a stable time with a ten year old Expires handler.
  [maurits] #127


## 3.1.1 (2023-05-15)


### Tests

- Changed hardcoded test date to June instead of May to temporarily fix a testing error.
  See `issue 127 <https://github.com/plone/plone.app.caching/issues/127>`_.
  Needs a proper fix within a month.
  [maurits] #127


## 3.1.0 (2023-04-26)


### New features:

- Update the resourceRegistries ETag to use the config registry modification time.
  This time is set since Plone 6.0.4.
  Fixes `issue 93 <https://github.com/plone/plone.app.caching/issues/93>`_.
  [maurits] #93


## 3.0.5 (2023-04-14)


### Bug fixes:

- Fix spelling error.
  [gforcada] #124


## 3.0.4 (2023-03-14)


### Bug fixes:

- Do not mention Squid but mentions CDNs in the descriptions. [jensens] #119


### Internal:

- Update configuration files.
  [plone devs] 13d8d6c0, cbbcff93


## 3.0.3 (2023-02-22)


### Bug fixes:

- Declare dependencies.
  [gforcada] #1


### Documentation:

- Convert README and CHANGES to markdown.  [ericof] #114


## 3.0.2 (2023-01-26)

### Bug fixes:

- Correct Bootstrap classes for `<select />` in controlpanel.
  [petschki] (#112)
- Revert changes to tests to work with the Zope security fix.
  We must have an empty byte, not text, otherwise it is an indication that we get a possibly wrong Content-Type in a 304 status.
  See `Zope issue 1089 <https://github.com/zopefoundation/Zope/issues/1089>`_.
  [maurits] (#1089)

## 3.0.1 (2022-12-21)

### Bug fixes:

- Fix tests to work with the Zope security fix.
  [maurits] (#106)

## 3.0.0 (2022-11-14)

### Bug fixes:

- Add missing quotation mark in Etag 304 Response [sverbois] (#104)

## 3.0.0b2 (2022-07-20)

### Bug fixes:

- Remove trailing comma to avoid different default messages for the same msgid
  [erral] (#102)

## 3.0.0b1 (2022-06-23)

### Bug fixes:

- Add missing i18n tags
  [erral] (#101)

## 3.0.0a14 (2022-05-15)

### Breaking changes:

- Remove unmaintained Split-View profile.
  [jensens] (#99)

### New features:

- Move caching ruleset assignments from here to plone.restapi and add ZCML feature here.
  [jensens] (#100)

### Bug fixes:

- Minor overhaul, use plone.base, remove some Plone 5.2 imports, ...
  [jensens] (#98)
- Minor code cleanup and review/overhaul docs.
  [jensens] (#99)

## 3.0.0a13 (2022-04-05)

### Bug fixes:

- Apply black to the codebase, format it to be Python 3 only (#94)

## 3.0.0a12 (2022-04-04)

### Bug fixes:

- Test-only fix: caching checks for ``timestamp.txt`` in ``portal_resources`` which is no longer there.
  Update ETAG Headers accordingly.
  [pbauer] (#92)

## 3.0.0a11 (2022-02-24)

### Bug fixes:

- Updated control panel icon. Use iconresolver to get the proper svg icon.
  [yurj] (#91)

## 3.0.0a10 (2021-12-01)

### New features:

- When purging images also purge the field WITHOUT a size parameter (e.g. ``[...]/@@images/image``).
  [wolbernd] (#89)

## 3.0.0a9 (2021-11-23)

### Bug fixes:

- Remove translations endpoint test because it does not have the correct fixture
  [sneridagh] (#87)

## 3.0.0a8 (2021-10-22)

### Bug fixes:

- fix deprecated imports
  [petschki] (#86)

## 3.0.0a7 (2021-10-13)

### Bug fixes:

- Fix label in controlpanel.pt.  [brian.duncan] (#84)

## 3.0.0a6 (2021-09-15)

### Bug fixes:

- Add upgrade step to define the new base terse cache setting.
  [maurits] (#82)

## 3.0.0a5 (2021-09-01)

### New features:

- Add etag for layout property.
  This is not yet added to a caching profile, but this can be done later.
  Fixes `issue 80 <https://github.com/plone/plone.app.caching/issues/80>`_.
  [maurits] (#80)

## 3.0.0a4 (2021-05-14)

### Bug fixes:

- Fix ram-caching of binary files.
  [agitator] (#79)

## 3.0.0a3 (2021-02-25)

### Breaking changes:

- Update for Plone 6 with Bootstrap markup
  [ale-rt, jensens] (#63)

### Bug fixes:

- Links with pat-modal:  Remove unused redirectOnResponse from data-pat-modal actionOptions.  (Products.CMFPlone#3197)
  [fulv] (#3197)

## 3.0.0a2 (2021-02-02)

### New features:

- Restored ``resourceRegistries`` ETag, but now for Plone 5 resource registries.
  Fixes warning "Could not find value adapter for ETag component resourceRegistries".
  [maurits] (#61)

### Bug fixes:

- Add more purge paths for images and downloads [jensens] (#71)

## 3.0.0a1 (2020-12-03)

### Breaking changes:

- Remove traces of Archetypes
  [pbauer] (#68)
- Drop Python 2 support.
  Black code style and isort.
  [jensens] (#69)

### New features:

- Introduce *terseCaching* operation and `plone.content.dynamic` ruleset.
  *terseCaching* is a rule with by default 10s in browser cache and 60s in edge cache.
  It is intended to be used for highly dynamic content defined in the `plone.content.dynamic` ruleset.
  The combination reduces load on the backend if there a lots of requests.
  [jensens] (66-1)
- Support for *plone.restapi*.
  Define `cache:ruleset` assignments for anonymous accessible endpoints.
  Attention: Relies on *Vary* header unless *plone.restapi* gives up content negotiation.
  Latter may conflict with edge side cache not supporting the Vary header.
  [jensens] (66-2)

## 2.0.8 (2020-10-30)

### Bug fixes:

- Do not assume request or request.URL is a string. It might be None. [jensens, iham] (#59)
- Remove hopelessly outdated proxy config examples.
  Look at plone.recipe.varnish for excellent examples!
  [jensens] (#64)

## 2.0.7 (2020-09-28)

### Bug fixes:

- Fixed invalid escape sequences.
  [maurits] (#3130)

## 2.0.6 (2020-06-24)

### New features:

- Remove Range from request if the If-Range condition is not fulfilled
  [mamico] (#58)

## 2.0.5 (2020-04-20)

### Bug fixes:

- Minor packaging updates. (#1)

## 2.0.4 (2020-02-20)

### Bug fixes:

- Purging image scales of behavior fields, e.g. lead image
  [ksuess] (#55)

## 2.0.3 (2019-09-13)

### Bug fixes:

- Fix python3 related encoding error on manual purge page.
  [agitator] (#51)

## 2.0.2 (2019-04-10)

### Bug fixes:

- fix typo [vincentfretin] (#47)
- Fix controlpanel for Python 3
  [petschki] (#48)

## 2.0.1 (2019-03-03)

### Bug fixes:

- Only fire 1 Purge() when deleting content, instead of 3 [skurfer]
  Detect and ignore content creation more reliably [skurfer]
  Also purge the parent object when something changes (since the parent probably displays a list that includes the item being changed)
  [skurfer] (#37)

## 2.0.0 (2019-02-08)

### Breaking changes:

- Removed legacy resource registries [ksuess] (#45)

## 1.2.23 (2018-12-28)

### Bug fixes:

- Warn after save if caching was disabled while purging is still enabled.
  [jensens]

Clean-up

- Legacy code clean-up
  Handling of legacy resource registries Products.ResourceRegistries removed
  [ksuess]

## 1.2.22 (2018-09-23)

### New features:

- Python 3 support
  [pbauer, MatthewWilkes, ale-rt]

## 1.2.21 (2018-04-03)

### New features:

- Use plone as i18n domain in ZCML files too
  [erral]

- Use plone as i18n domain
  [erral]

### Bug fixes:

- Fix backslash escapes in i18nstring (poedit complains).
  [jensens]

## 1.2.20 (2018-02-05)

### New features:

- Prepare for Python 2 / 3 compatibility
  [b4oshany, davilima6]

## 1.2.19 (2017-11-24)

### New features:

- Purging all image scale paths and file paths in custom dexterity content types. [karalics]

## 1.2.18 (2017-04-08)

### Bug fixes:

- Fixed blank edit forms of the per ruleset parameters.
  `Issue 1993 <https://github.com/plone/Products.CMFPlone/issues/1993>`_.
  [maurits]

## 1.2.17 (2017-04-02)

### Bug fixes:

- Fixed title and description of max age in strong caching rule for resources.
  They wrongly were the same as for shared max age.
  Fixes `issue 1989 <https://github.com/plone/Products.CMFPlone/issues/1989>`_.
  [maurits]

## 1.2.16 (2017-03-23)

### Bug fixes:

- Fix: Do not break Plone if there is no Archetypes available.
  [jensens]

## 1.2.15 (2017-01-12)

### Bug fixes:

- Remove dependency on unittest2; fix tests assertions.
  [hvelarde]

- Fixed tests when using ZODB 4.
  [davisagli]

## 1.2.14 (2016-11-18)

### Bug fixes:

- Update code to follow Plone styleguide.
  [gforcada]

## 1.2.13 (2016-10-05)

### Bug fixes:

- Code-Style: isort, utf8-headers, zca-decorators, manual cleanup.
  [jensens]

## 1.2.12 (2016-09-16)

### Bug fixes:

- Enable unload protection by using pattern class ``pat-formunloadalert`` instead ``enableUnloadProtection``.
  [thet]

## 1.2.11 (2016-08-17)

Fixes:

- Use plone.namedfile for test image.
  [didrix]

- Use zope.interface decorator.
  [gforcada]

## 1.2.10 (2016-03-29)

New:

- Show status after synchronous purge if it is an error status.
  [maurits]

## 1.2.9 (2016-02-19)

Fixes:

- Fixed deprecated imports in tests.  [thet]

## 1.2.8 (2015-11-28)

Fixes:

- Updated Site Setup link in all control panels.
  Fixes https://github.com/plone/Products.CMFPlone/issues/1255
  [davilima6]

## 1.2.7 (2015-09-09)

- fix cache settings modal settings so they do not show content
  inline on save.
  [vangheem]

## 1.2.6 (2015-07-18)

- Remove gzip option, silly to be done at this layer.
  [vangheem]

- Change the category of the configlet to 'plone-advanced'
  [sneridagh]

## 1.2.5 (2015-06-09)

- correctly create purge paths for root of site, prevent double slashes
  and the empty root of site(no trailing slash) not getting a purge
  path generated
  [vangheem]

## 1.2.4 (2015-06-05)

- update first time here warning
  [vangheem]

- make control panel work for both plone 4 and plone 5 with tabs
  [vangheem]

## 1.2.3 (2015-05-04)

- Fixed getObjectDefaultView method to strip off leading / and/or @@.
  [alecghica]

- Fix the portalPath used in the controlpanel for manual purging URL's.
  This bug resulted in rarely doing all the purging required.
  [puittenbroek]

## 1.2.2 (2014-10-23)

- Remove DL's from portal message templates.
  https://github.com/plone/Products.CMFPlone/issues/153
  [khink]

- Fix ruleset registry test isolation so that is no longer order dependent.
  [jone]

## 1.2.1 (2014-04-01)

- Fix tests that fail on the day before the switch to daylight saving time.
  [pbauer]

## 1.2.0 (2014-02-26)

- Use the PLONE_APP_CONTENTTYPES_FIXTURE test layer for Plone 5 compatibility.
  [timo]

## 1.1.7 (unreleased)

- Make it possible to set a maxage of zero in strong caching. This is
  an edge case since this would ordinarily be handled by moderate caching.
  [smcmahon]

- Add some testing for weak caching operations.
  [smcmahon]

- Fix handling of anon-only flag for cases where maxage is not zero. It
  was effectively ignored. Added operation test for strong caching.
  [smcmahon]

## 1.1.6 (2013-08-14)

- Fix double purge of paths for items whose default view is the same as /view
  [eleddy]

## 1.1.5 (2013-08-13)

- Register the plone.atobjectfields adapter not only when Products.Archetypes
  but also plone.app.blob is installed.
  [thet]

## 1.1.4 (2013-06-13)

- Fixed purge paths for virtual hosting scenarios using virtual path components.
  [dokai]

## 1.1.3 (2013-03-05)

- Provide message for newbies to suggest importing
  pre-defined caching rule set.
  [vangheem]


## 1.1.2 (2012-12-27)

- Add other feed types to plone.content.feed purge policy
  [vangheem]

- Fix bug where resource registries etag is calculated incorrectly if a registry
  is missing.
  [davisagli]

- Fix bug `12038 <http://dev.plone.org/ticket/12038>`_. If transformIterable
  iterates on the 'result' iterable, it must return a new one.
  [ebrehault]

## 1.1.1 (2012-08-30)

- Nothing changed yet.

## 1.1 (2012-05-25)

- Use zope.browserresource instead of zope.app.publisher.
  [hannosch]

- Deprecated methods aliases were replaced on tests.
  [hvelarde]

## 1.0.4 (unreleased)

- Fix possible test failures by logging in with the user name.
  Note that user id and user name (login name) can differ.
  [maurits]

## 1.0.3 (2012-04-15)

- Fix packaging issue.
  [esteele]

## 1.0.2 (2012-04-15)

- Handle caching of resource registries in RAM cache by not storing empty
  bodies in the RAMCache
  [eleddy with major tseaver support]

## 1.0.1 (2012-01-26)

- Properly handle a changed configuration from with etags to no etags by
  forcing a page refresh
  [eleddy]

- When not caching with etags, don't sent an etag header to stop caching
  [eleddy]

- When there was an error like Unauthorized, 200 status and empty body would be
  cached in RAMCache instead of not caching anything.
  This is due to a bug with Zope 2.13 publication events :
  response.status is not set when IPubBeforeAbort is notified.
  Fixed by using error_status stored on request by plone.transformchain.
  [gotcha]

- Added 12 translation strings for ruleset's title and description. Corresponding translation
  strings have been added in plone.app.caching-manual.pot in PloneTranslations
  [giacomos]

- Added 6 translation strings for caching profiles' title and description. Corresponding translation
  strings have been added in plone.app.caching-manual.pot in PloneTranslations
  [giacomos]

- Changed wrong i18n domain in the messagefactory. plone.caching -> plone.app.caching.
  [giacomos]

## 1.0 (2011-05-12)

- Use the `userLanguage` ETag component in place of the language ETag component
  in the default configs to allow ETags to be used for anonymous users with
  caching.
  [elro]

- Add the SERVER_URL to the RAM cache key.
  [elro]

- Declare `plone.namedfile.scaling.ImageScale` to be a `plone.stableResource`.
  [elro]

- Add MANIFEST.in.
  [WouterVH]

- Fixed tests failing on Zope 2.13 due to the HTTP status no longer being
  included in the response headers.
  [davisagli]

- Add an ILastModified adapter for FSPageTemplate as the FSObject adapter
  would otherwise take precedence.
  [stefan]

## 1.0b2 (2011-02-10)

- Added `News Item` to the list of `purgedContentTypes`, so the image field
  and its scales gets purged.
  [stefan, hannosch]

- Associated `file_view`, `image_view` and `image_view_fullscreen` by default
  with the `plone.content.itemView` ruleset, since none of them is the default
  view of their respective content type, they didn't get the automated
  handling.
  [stefan, hannosch]

- Added purging for plone.app.blob's BlobFields.
  [stefan, hannosch]

- Fix documentation to refer to the correct `resourceRegistries` instead of
  the singular version.
  [stefan, hannosch]

- Use plone.registry ``FieldRefs`` to manage parameter overrides. This
  requires plone.app.registry 1.0b3 and plone.app.registry 1.0b3 or later.
  [optilude]

- Update distribution metadata to current best practice.
  [hannosch]

- Added an etag component to track the existence of a copy/cut cookie
  [newbery]

- Fixed various i18n issues.
  [vincentfretin]

## 1.0b1 (2010-08-04)

- Add an option for "anonymous only" caching to the default operations.
  This is a simple way to switch off caching for logged-in users. See
  the README for more details.
  [optilude]

- Add basic plone.namedfile caching rules, if plone.namedfile is installed
  [optilude]

- Implement lookup based on portal type class/interface as well as name,
  and set up defaults for items and folders.
  [optilude]

- template fixes for cmf.pt compatibility
  [pilz]

## 1.0a1 (2010-04-24)

- Initial release.
  [optilude, newbery, smcmahon]



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/plone/plone.app.caching",
    "name": "plone.app.caching",
    "maintainer": null,
    "docs_url": "https://pythonhosted.org/plone.app.caching/",
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "plone caching",
    "author": "Plone Foundation",
    "author_email": "plone-developers@lists.sourceforge.net",
    "download_url": "https://files.pythonhosted.org/packages/9e/c1/6cb3e109ea954b027d0d9941f1c091ac7f9d36e759c77610e7ef8919fd18/plone_app_caching-4.0.0.tar.gz",
    "platform": null,
    "description": "\n<p align=\"center\">\n    <img alt=\"Plone Logo\" width=\"200px\" src=\"https://raw.githubusercontent.com/plone/.github/main/plone-logo.png\">\n</p>\n\n<h1 align=\"center\">\n  plone.app.caching\n</h1>\n\n<div align=\"center\">\n\n[![PyPI - Wheel](https://img.shields.io/pypi/wheel/plone.app.caching)](https://pypi.org/project/plone.app.caching/)\n[![PyPI - License](https://img.shields.io/pypi/l/plone.app.caching)](https://pypi.org/project/plone.app.caching/)\n[![PyPI - Status](https://img.shields.io/pypi/status/plone.app.caching)](https://pypi.org/project/plone.app.caching/)\n\n[![GitHub contributors](https://img.shields.io/github/contributors/plone/plone.app.caching)](https://github.com/plone/plone.app.caching)\n![GitHub Repo stars](https://img.shields.io/github/stars/plone/plone.app.caching?style=flat-square)\n\n</div>\n\n## Introduction\n\nThis package provides a Plone UI and default rules for managing HTTP response caching in Plone.\nIt builds on [z3c.caching](https://github.com/zopefoundation/z3c.caching), [plone.caching](https://github.com/plone/plone.caching) and [plone.cachepurging](https://github.com/plone/plone.cachepurging).\n\n\n### Compatibility\n\n| Version | Plone |\n|------|-----|\n| 3.x | 6.0 or above |\n| 2.x | 5.2 |\n| 1.x | 5.1, 5.0, 4.3, 4.2, 4.1 |\n\n\n## Installation\n\n`plone.app.caching` is shipped as a dependency of the *Plone* package, and it should be available on all Plone installations, but\nCaching is **not enabled by default**, although it is highly recommended to configure caching for every new Plone site.\n\nAfter creating a new Plone site, go to `Site Setup`, then `Addons` and install `HTTP caching support`.\n\nUnder the Advanced header, look for the Caching control panel -- currently only supported on the Classic UI.\n\n### Troubleshooting\n\nWhen the Caching control panel is not there, there can be various reasons for this:\n\n- If your installation does not load the `Plone` package, but only `Products.CMFPlone`, then `plone.app.caching` is not included.\n- If the package *is* included, but you add a Plone Site using the advanced form and disable caching, then the control panel is not there.\n\nIf you want to install it in an existing Plone Site:\n\n1. Make sure the package is available in the Plone instance, by adding `plone.app.caching` or `Plone` to your installation.\n2. From the Plone Site Setup go to the ZMI (Zope Management Interface).\n3. Go to ``portal_setup``, and then to the Import tab.\n4. Select the HTTP caching support profile, perhaps easiest by id: `profile-plone.app.caching:default`.\n5. Click 'Import all steps'.\n\n\n## Source Code\n\nContributors, please read the document [Process for Plone core's development](https://5.docs.plone.org/develop/coredev/docs/index.html)\n\nSources are at the [Plone code repository hosted at Github ](https://github.com/plone/plone.app.caching).\n\n## This project is supported by\n\n<a href=\"https://plone.org/foundation/\">\n    <img alt=\"Plone Logo\" width=\"200px\" src=\"https://raw.githubusercontent.com/plone/.github/main/plone-foundation.png\">\n</a>\n\n## License\n\nThe project is licensed under GPLv2.\n\n\n# Changelog\n\n<!--\n   You should *NOT* be adding new change log entries to this file.\n   You should create a file in the news directory instead.\n   For helpful instructions, please see:\n   https://github.com/plone/plone.releaser/blob/master/ADD-A-NEWS-ITEM.rst\n-->\n\n<!-- towncrier release notes start -->\n\n## 4.0.0 (2024-09-24)\n\n\n### Breaking changes:\n\n- Replace `plone.app.caching` import step with a post handler.\n  Removed the `plone.app.caching.txt` Generic Setup flag file that was needed by the import step.\n  [maurits] #139\n\n\n### New features:\n\n- Add uninstall profile.\n  [maurits] #139\n\n## 3.1.5 (2024-06-26)\n\n\n### Bug fixes:\n\n- Add Zope to dependencies.  Update config files with plone/meta.\n  [maurits] #1\n\n## 3.1.4 (2024-02-12)\n\n\n### Bug fixes:\n\n- Fix purging of image scale paths for Dexterity content.\n  [erral] #136\n\n\n### Internal:\n\n- Update configuration files.\n  [plone devs] cfffba8c\n\n## 3.1.3 (2023-10-25)\n\n\n### Bug fixes:\n\n- Fix `locked` component of ETag to discriminate between different locks. @JeffersonBledsoe, @davisagli #122\n\n\n## 3.1.2 (2023-06-16)\n\n\n### Internal:\n\n- Update configuration files.\n  [plone devs] e08b1234, fb4615d7\n\n\n### Tests\n\n- Fixed tests that compared a stable time with a ten year old Expires handler.\n  [maurits] #127\n\n\n## 3.1.1 (2023-05-15)\n\n\n### Tests\n\n- Changed hardcoded test date to June instead of May to temporarily fix a testing error.\n  See `issue 127 <https://github.com/plone/plone.app.caching/issues/127>`_.\n  Needs a proper fix within a month.\n  [maurits] #127\n\n\n## 3.1.0 (2023-04-26)\n\n\n### New features:\n\n- Update the resourceRegistries ETag to use the config registry modification time.\n  This time is set since Plone 6.0.4.\n  Fixes `issue 93 <https://github.com/plone/plone.app.caching/issues/93>`_.\n  [maurits] #93\n\n\n## 3.0.5 (2023-04-14)\n\n\n### Bug fixes:\n\n- Fix spelling error.\n  [gforcada] #124\n\n\n## 3.0.4 (2023-03-14)\n\n\n### Bug fixes:\n\n- Do not mention Squid but mentions CDNs in the descriptions. [jensens] #119\n\n\n### Internal:\n\n- Update configuration files.\n  [plone devs] 13d8d6c0, cbbcff93\n\n\n## 3.0.3 (2023-02-22)\n\n\n### Bug fixes:\n\n- Declare dependencies.\n  [gforcada] #1\n\n\n### Documentation:\n\n- Convert README and CHANGES to markdown.  [ericof] #114\n\n\n## 3.0.2 (2023-01-26)\n\n### Bug fixes:\n\n- Correct Bootstrap classes for `<select />` in controlpanel.\n  [petschki] (#112)\n- Revert changes to tests to work with the Zope security fix.\n  We must have an empty byte, not text, otherwise it is an indication that we get a possibly wrong Content-Type in a 304 status.\n  See `Zope issue 1089 <https://github.com/zopefoundation/Zope/issues/1089>`_.\n  [maurits] (#1089)\n\n## 3.0.1 (2022-12-21)\n\n### Bug fixes:\n\n- Fix tests to work with the Zope security fix.\n  [maurits] (#106)\n\n## 3.0.0 (2022-11-14)\n\n### Bug fixes:\n\n- Add missing quotation mark in Etag 304 Response [sverbois] (#104)\n\n## 3.0.0b2 (2022-07-20)\n\n### Bug fixes:\n\n- Remove trailing comma to avoid different default messages for the same msgid\n  [erral] (#102)\n\n## 3.0.0b1 (2022-06-23)\n\n### Bug fixes:\n\n- Add missing i18n tags\n  [erral] (#101)\n\n## 3.0.0a14 (2022-05-15)\n\n### Breaking changes:\n\n- Remove unmaintained Split-View profile.\n  [jensens] (#99)\n\n### New features:\n\n- Move caching ruleset assignments from here to plone.restapi and add ZCML feature here.\n  [jensens] (#100)\n\n### Bug fixes:\n\n- Minor overhaul, use plone.base, remove some Plone 5.2 imports, ...\n  [jensens] (#98)\n- Minor code cleanup and review/overhaul docs.\n  [jensens] (#99)\n\n## 3.0.0a13 (2022-04-05)\n\n### Bug fixes:\n\n- Apply black to the codebase, format it to be Python 3 only (#94)\n\n## 3.0.0a12 (2022-04-04)\n\n### Bug fixes:\n\n- Test-only fix: caching checks for ``timestamp.txt`` in ``portal_resources`` which is no longer there.\n  Update ETAG Headers accordingly.\n  [pbauer] (#92)\n\n## 3.0.0a11 (2022-02-24)\n\n### Bug fixes:\n\n- Updated control panel icon. Use iconresolver to get the proper svg icon.\n  [yurj] (#91)\n\n## 3.0.0a10 (2021-12-01)\n\n### New features:\n\n- When purging images also purge the field WITHOUT a size parameter (e.g. ``[...]/@@images/image``).\n  [wolbernd] (#89)\n\n## 3.0.0a9 (2021-11-23)\n\n### Bug fixes:\n\n- Remove translations endpoint test because it does not have the correct fixture\n  [sneridagh] (#87)\n\n## 3.0.0a8 (2021-10-22)\n\n### Bug fixes:\n\n- fix deprecated imports\n  [petschki] (#86)\n\n## 3.0.0a7 (2021-10-13)\n\n### Bug fixes:\n\n- Fix label in controlpanel.pt.  [brian.duncan] (#84)\n\n## 3.0.0a6 (2021-09-15)\n\n### Bug fixes:\n\n- Add upgrade step to define the new base terse cache setting.\n  [maurits] (#82)\n\n## 3.0.0a5 (2021-09-01)\n\n### New features:\n\n- Add etag for layout property.\n  This is not yet added to a caching profile, but this can be done later.\n  Fixes `issue 80 <https://github.com/plone/plone.app.caching/issues/80>`_.\n  [maurits] (#80)\n\n## 3.0.0a4 (2021-05-14)\n\n### Bug fixes:\n\n- Fix ram-caching of binary files.\n  [agitator] (#79)\n\n## 3.0.0a3 (2021-02-25)\n\n### Breaking changes:\n\n- Update for Plone 6 with Bootstrap markup\n  [ale-rt, jensens] (#63)\n\n### Bug fixes:\n\n- Links with pat-modal:  Remove unused redirectOnResponse from data-pat-modal actionOptions.  (Products.CMFPlone#3197)\n  [fulv] (#3197)\n\n## 3.0.0a2 (2021-02-02)\n\n### New features:\n\n- Restored ``resourceRegistries`` ETag, but now for Plone 5 resource registries.\n  Fixes warning \"Could not find value adapter for ETag component resourceRegistries\".\n  [maurits] (#61)\n\n### Bug fixes:\n\n- Add more purge paths for images and downloads [jensens] (#71)\n\n## 3.0.0a1 (2020-12-03)\n\n### Breaking changes:\n\n- Remove traces of Archetypes\n  [pbauer] (#68)\n- Drop Python 2 support.\n  Black code style and isort.\n  [jensens] (#69)\n\n### New features:\n\n- Introduce *terseCaching* operation and `plone.content.dynamic` ruleset.\n  *terseCaching* is a rule with by default 10s in browser cache and 60s in edge cache.\n  It is intended to be used for highly dynamic content defined in the `plone.content.dynamic` ruleset.\n  The combination reduces load on the backend if there a lots of requests.\n  [jensens] (66-1)\n- Support for *plone.restapi*.\n  Define `cache:ruleset` assignments for anonymous accessible endpoints.\n  Attention: Relies on *Vary* header unless *plone.restapi* gives up content negotiation.\n  Latter may conflict with edge side cache not supporting the Vary header.\n  [jensens] (66-2)\n\n## 2.0.8 (2020-10-30)\n\n### Bug fixes:\n\n- Do not assume request or request.URL is a string. It might be None. [jensens, iham] (#59)\n- Remove hopelessly outdated proxy config examples.\n  Look at plone.recipe.varnish for excellent examples!\n  [jensens] (#64)\n\n## 2.0.7 (2020-09-28)\n\n### Bug fixes:\n\n- Fixed invalid escape sequences.\n  [maurits] (#3130)\n\n## 2.0.6 (2020-06-24)\n\n### New features:\n\n- Remove Range from request if the If-Range condition is not fulfilled\n  [mamico] (#58)\n\n## 2.0.5 (2020-04-20)\n\n### Bug fixes:\n\n- Minor packaging updates. (#1)\n\n## 2.0.4 (2020-02-20)\n\n### Bug fixes:\n\n- Purging image scales of behavior fields, e.g. lead image\n  [ksuess] (#55)\n\n## 2.0.3 (2019-09-13)\n\n### Bug fixes:\n\n- Fix python3 related encoding error on manual purge page.\n  [agitator] (#51)\n\n## 2.0.2 (2019-04-10)\n\n### Bug fixes:\n\n- fix typo [vincentfretin] (#47)\n- Fix controlpanel for Python 3\n  [petschki] (#48)\n\n## 2.0.1 (2019-03-03)\n\n### Bug fixes:\n\n- Only fire 1 Purge() when deleting content, instead of 3 [skurfer]\n  Detect and ignore content creation more reliably [skurfer]\n  Also purge the parent object when something changes (since the parent probably displays a list that includes the item being changed)\n  [skurfer] (#37)\n\n## 2.0.0 (2019-02-08)\n\n### Breaking changes:\n\n- Removed legacy resource registries [ksuess] (#45)\n\n## 1.2.23 (2018-12-28)\n\n### Bug fixes:\n\n- Warn after save if caching was disabled while purging is still enabled.\n  [jensens]\n\nClean-up\n\n- Legacy code clean-up\n  Handling of legacy resource registries Products.ResourceRegistries removed\n  [ksuess]\n\n## 1.2.22 (2018-09-23)\n\n### New features:\n\n- Python 3 support\n  [pbauer, MatthewWilkes, ale-rt]\n\n## 1.2.21 (2018-04-03)\n\n### New features:\n\n- Use plone as i18n domain in ZCML files too\n  [erral]\n\n- Use plone as i18n domain\n  [erral]\n\n### Bug fixes:\n\n- Fix backslash escapes in i18nstring (poedit complains).\n  [jensens]\n\n## 1.2.20 (2018-02-05)\n\n### New features:\n\n- Prepare for Python 2 / 3 compatibility\n  [b4oshany, davilima6]\n\n## 1.2.19 (2017-11-24)\n\n### New features:\n\n- Purging all image scale paths and file paths in custom dexterity content types. [karalics]\n\n## 1.2.18 (2017-04-08)\n\n### Bug fixes:\n\n- Fixed blank edit forms of the per ruleset parameters.\n  `Issue 1993 <https://github.com/plone/Products.CMFPlone/issues/1993>`_.\n  [maurits]\n\n## 1.2.17 (2017-04-02)\n\n### Bug fixes:\n\n- Fixed title and description of max age in strong caching rule for resources.\n  They wrongly were the same as for shared max age.\n  Fixes `issue 1989 <https://github.com/plone/Products.CMFPlone/issues/1989>`_.\n  [maurits]\n\n## 1.2.16 (2017-03-23)\n\n### Bug fixes:\n\n- Fix: Do not break Plone if there is no Archetypes available.\n  [jensens]\n\n## 1.2.15 (2017-01-12)\n\n### Bug fixes:\n\n- Remove dependency on unittest2; fix tests assertions.\n  [hvelarde]\n\n- Fixed tests when using ZODB 4.\n  [davisagli]\n\n## 1.2.14 (2016-11-18)\n\n### Bug fixes:\n\n- Update code to follow Plone styleguide.\n  [gforcada]\n\n## 1.2.13 (2016-10-05)\n\n### Bug fixes:\n\n- Code-Style: isort, utf8-headers, zca-decorators, manual cleanup.\n  [jensens]\n\n## 1.2.12 (2016-09-16)\n\n### Bug fixes:\n\n- Enable unload protection by using pattern class ``pat-formunloadalert`` instead ``enableUnloadProtection``.\n  [thet]\n\n## 1.2.11 (2016-08-17)\n\nFixes:\n\n- Use plone.namedfile for test image.\n  [didrix]\n\n- Use zope.interface decorator.\n  [gforcada]\n\n## 1.2.10 (2016-03-29)\n\nNew:\n\n- Show status after synchronous purge if it is an error status.\n  [maurits]\n\n## 1.2.9 (2016-02-19)\n\nFixes:\n\n- Fixed deprecated imports in tests.  [thet]\n\n## 1.2.8 (2015-11-28)\n\nFixes:\n\n- Updated Site Setup link in all control panels.\n  Fixes https://github.com/plone/Products.CMFPlone/issues/1255\n  [davilima6]\n\n## 1.2.7 (2015-09-09)\n\n- fix cache settings modal settings so they do not show content\n  inline on save.\n  [vangheem]\n\n## 1.2.6 (2015-07-18)\n\n- Remove gzip option, silly to be done at this layer.\n  [vangheem]\n\n- Change the category of the configlet to 'plone-advanced'\n  [sneridagh]\n\n## 1.2.5 (2015-06-09)\n\n- correctly create purge paths for root of site, prevent double slashes\n  and the empty root of site(no trailing slash) not getting a purge\n  path generated\n  [vangheem]\n\n## 1.2.4 (2015-06-05)\n\n- update first time here warning\n  [vangheem]\n\n- make control panel work for both plone 4 and plone 5 with tabs\n  [vangheem]\n\n## 1.2.3 (2015-05-04)\n\n- Fixed getObjectDefaultView method to strip off leading / and/or @@.\n  [alecghica]\n\n- Fix the portalPath used in the controlpanel for manual purging URL's.\n  This bug resulted in rarely doing all the purging required.\n  [puittenbroek]\n\n## 1.2.2 (2014-10-23)\n\n- Remove DL's from portal message templates.\n  https://github.com/plone/Products.CMFPlone/issues/153\n  [khink]\n\n- Fix ruleset registry test isolation so that is no longer order dependent.\n  [jone]\n\n## 1.2.1 (2014-04-01)\n\n- Fix tests that fail on the day before the switch to daylight saving time.\n  [pbauer]\n\n## 1.2.0 (2014-02-26)\n\n- Use the PLONE_APP_CONTENTTYPES_FIXTURE test layer for Plone 5 compatibility.\n  [timo]\n\n## 1.1.7 (unreleased)\n\n- Make it possible to set a maxage of zero in strong caching. This is\n  an edge case since this would ordinarily be handled by moderate caching.\n  [smcmahon]\n\n- Add some testing for weak caching operations.\n  [smcmahon]\n\n- Fix handling of anon-only flag for cases where maxage is not zero. It\n  was effectively ignored. Added operation test for strong caching.\n  [smcmahon]\n\n## 1.1.6 (2013-08-14)\n\n- Fix double purge of paths for items whose default view is the same as /view\n  [eleddy]\n\n## 1.1.5 (2013-08-13)\n\n- Register the plone.atobjectfields adapter not only when Products.Archetypes\n  but also plone.app.blob is installed.\n  [thet]\n\n## 1.1.4 (2013-06-13)\n\n- Fixed purge paths for virtual hosting scenarios using virtual path components.\n  [dokai]\n\n## 1.1.3 (2013-03-05)\n\n- Provide message for newbies to suggest importing\n  pre-defined caching rule set.\n  [vangheem]\n\n\n## 1.1.2 (2012-12-27)\n\n- Add other feed types to plone.content.feed purge policy\n  [vangheem]\n\n- Fix bug where resource registries etag is calculated incorrectly if a registry\n  is missing.\n  [davisagli]\n\n- Fix bug `12038 <http://dev.plone.org/ticket/12038>`_. If transformIterable\n  iterates on the 'result' iterable, it must return a new one.\n  [ebrehault]\n\n## 1.1.1 (2012-08-30)\n\n- Nothing changed yet.\n\n## 1.1 (2012-05-25)\n\n- Use zope.browserresource instead of zope.app.publisher.\n  [hannosch]\n\n- Deprecated methods aliases were replaced on tests.\n  [hvelarde]\n\n## 1.0.4 (unreleased)\n\n- Fix possible test failures by logging in with the user name.\n  Note that user id and user name (login name) can differ.\n  [maurits]\n\n## 1.0.3 (2012-04-15)\n\n- Fix packaging issue.\n  [esteele]\n\n## 1.0.2 (2012-04-15)\n\n- Handle caching of resource registries in RAM cache by not storing empty\n  bodies in the RAMCache\n  [eleddy with major tseaver support]\n\n## 1.0.1 (2012-01-26)\n\n- Properly handle a changed configuration from with etags to no etags by\n  forcing a page refresh\n  [eleddy]\n\n- When not caching with etags, don't sent an etag header to stop caching\n  [eleddy]\n\n- When there was an error like Unauthorized, 200 status and empty body would be\n  cached in RAMCache instead of not caching anything.\n  This is due to a bug with Zope 2.13 publication events :\n  response.status is not set when IPubBeforeAbort is notified.\n  Fixed by using error_status stored on request by plone.transformchain.\n  [gotcha]\n\n- Added 12 translation strings for ruleset's title and description. Corresponding translation\n  strings have been added in plone.app.caching-manual.pot in PloneTranslations\n  [giacomos]\n\n- Added 6 translation strings for caching profiles' title and description. Corresponding translation\n  strings have been added in plone.app.caching-manual.pot in PloneTranslations\n  [giacomos]\n\n- Changed wrong i18n domain in the messagefactory. plone.caching -> plone.app.caching.\n  [giacomos]\n\n## 1.0 (2011-05-12)\n\n- Use the `userLanguage` ETag component in place of the language ETag component\n  in the default configs to allow ETags to be used for anonymous users with\n  caching.\n  [elro]\n\n- Add the SERVER_URL to the RAM cache key.\n  [elro]\n\n- Declare `plone.namedfile.scaling.ImageScale` to be a `plone.stableResource`.\n  [elro]\n\n- Add MANIFEST.in.\n  [WouterVH]\n\n- Fixed tests failing on Zope 2.13 due to the HTTP status no longer being\n  included in the response headers.\n  [davisagli]\n\n- Add an ILastModified adapter for FSPageTemplate as the FSObject adapter\n  would otherwise take precedence.\n  [stefan]\n\n## 1.0b2 (2011-02-10)\n\n- Added `News Item` to the list of `purgedContentTypes`, so the image field\n  and its scales gets purged.\n  [stefan, hannosch]\n\n- Associated `file_view`, `image_view` and `image_view_fullscreen` by default\n  with the `plone.content.itemView` ruleset, since none of them is the default\n  view of their respective content type, they didn't get the automated\n  handling.\n  [stefan, hannosch]\n\n- Added purging for plone.app.blob's BlobFields.\n  [stefan, hannosch]\n\n- Fix documentation to refer to the correct `resourceRegistries` instead of\n  the singular version.\n  [stefan, hannosch]\n\n- Use plone.registry ``FieldRefs`` to manage parameter overrides. This\n  requires plone.app.registry 1.0b3 and plone.app.registry 1.0b3 or later.\n  [optilude]\n\n- Update distribution metadata to current best practice.\n  [hannosch]\n\n- Added an etag component to track the existence of a copy/cut cookie\n  [newbery]\n\n- Fixed various i18n issues.\n  [vincentfretin]\n\n## 1.0b1 (2010-08-04)\n\n- Add an option for \"anonymous only\" caching to the default operations.\n  This is a simple way to switch off caching for logged-in users. See\n  the README for more details.\n  [optilude]\n\n- Add basic plone.namedfile caching rules, if plone.namedfile is installed\n  [optilude]\n\n- Implement lookup based on portal type class/interface as well as name,\n  and set up defaults for items and folders.\n  [optilude]\n\n- template fixes for cmf.pt compatibility\n  [pilz]\n\n## 1.0a1 (2010-04-24)\n\n- Initial release.\n  [optilude, newbery, smcmahon]\n\n\n",
    "bugtrack_url": null,
    "license": "GPL version 2",
    "summary": "Plone UI and default rules for plone.caching/z3c.caching",
    "version": "4.0.0",
    "project_urls": {
        "Homepage": "https://github.com/plone/plone.app.caching"
    },
    "split_keywords": [
        "plone",
        "caching"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ffdea4915de1191d48a04e11eb9029e57b7c04ff7f5f85abb65ca03da26b4a25",
                "md5": "93b96cb73dbba58286f32cbfb687164b",
                "sha256": "c568a6718b422ae2b05443b9a013bb949e5f3d4d64ac512858f48dcb5d9a2723"
            },
            "downloads": -1,
            "filename": "plone.app.caching-4.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "93b96cb73dbba58286f32cbfb687164b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 103058,
            "upload_time": "2024-09-24T16:38:26",
            "upload_time_iso_8601": "2024-09-24T16:38:26.048628Z",
            "url": "https://files.pythonhosted.org/packages/ff/de/a4915de1191d48a04e11eb9029e57b7c04ff7f5f85abb65ca03da26b4a25/plone.app.caching-4.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9ec16cb3e109ea954b027d0d9941f1c091ac7f9d36e759c77610e7ef8919fd18",
                "md5": "631ca3772a7e2888b5fb3e1ecb4da6de",
                "sha256": "f8af8e83bf122803dd1a7f7f30f40aede7942bc9491519c990ddacf7a4ff4dff"
            },
            "downloads": -1,
            "filename": "plone_app_caching-4.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "631ca3772a7e2888b5fb3e1ecb4da6de",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 94118,
            "upload_time": "2024-09-24T16:38:32",
            "upload_time_iso_8601": "2024-09-24T16:38:32.487155Z",
            "url": "https://files.pythonhosted.org/packages/9e/c1/6cb3e109ea954b027d0d9941f1c091ac7f9d36e759c77610e7ef8919fd18/plone_app_caching-4.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-24 16:38:32",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "plone",
    "github_project": "plone.app.caching",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "tox": true,
    "lcname": "plone.app.caching"
}
        
Elapsed time: 0.62630s