Zope的缓存管理器
项目描述
概述
此软件包为Zope提供了两个缓存管理器:一个RAMCacheManager和一个加速HTTP缓存管理器,它会在响应中添加HTTP缓存头。
以下内容面向对RAMCacheManager内部感兴趣的人,例如维护者。
简介
缓存框架不会以任何方式解释数据,它只是作为传递给它数据的通用存储。尽管如此,它仍然会尝试检查数据是否可pickle。换句话说,只有可pickle的数据才能被缓存。
RAMCacheManager背后的理念是它应该在线程之间共享,这样同一对象就不会在每个线程中缓存。这是通过将缓存数据结构本身作为模块级变量(RAMCacheManager.caches)来实现的。当然,这需要对该数据结构的修改进行锁定。
每个RAMCacheManager实例在RAMCacheManager.caches字典中都有一个缓存。在创建缓存管理器时生成一个唯一的__cacheid,它用作缓存键。
对象层次结构
- RAMCacheManager
- RAMCache
- ObjectCacheEntries
CacheEntry
RAMCacheManager是一个持久的占位对象。它在其创建时分配一个唯一的__cacheid。然后它被用作全局缓存字典中查找相应RAMCache对象的键。因此,每个RAMCacheManager都有一个与之相关的单个RAMCache。
RAMCache是每个RAMCacheManager唯一的易失性缓存。它在线程之间共享并执行所有锁定操作。它有一个写锁。但在读取时没有进行锁定。RAMCache保持一个按缓存对象的物理路径索引的ObjectCacheEntries字典。
ObjectCacheEntries是单个对象的缓存值的容器。它中的值按view_name、感兴趣请求变量和传递给Cache.ZCache_set()的额外关键字元组索引。
CacheEntry是一个围绕单个缓存值的包装器。它存储数据本身、创建时间、view_name并保持访问计数。
变更日志
5.0 (2023-02-01)
删除对Python 2.7、3.5和3.6的支持。
4.2 (2022-12-16)
修复针对Zope 4的测试中的隐秘的buildout配置错误。
添加对Python 3.10和3.11的支持。
4.1.1 (2021-07-02)
修复关于rfc1123_date的DeprecationWarning(#8)。
4.1.0 (2021-03-16)
添加对Python 3.9的支持。
4.0.3 (2019-10-14)
更多的包清理。
清理ZMI视图以适用于Zope 4。
修复由于Python 3行为改变引起的几个错误。
将isort更新到版本5。
4.0.2 (2019-02-17)
使用setup.py中的python_requires指定支持的Python版本。
添加对Python 3.7和3.8的支持。
删除对Python 3.4的支持,因为Zope不再支持它。
更多的PEP8合规性。
4.0.1 (2017-05-23)
将版本依赖移动到Zope的发布版本。
4.0.0 (2017-05-13)
需要Zope 4。
Python 3兼容性
3.0 (2016-07-18)
删除HelpSys支持。
2.13.1 (2014-09-14)
防止在没有请求的上下文中进行RAM缓存时出现警告。
2.13.0 (2010-07-11)
作为单独的包发布。
项目详情
哈希 用于 Products.StandardCacheManagers-5.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e401119a4ab5290b377726297b5e0739c382aea58fada192b101cd88f09aa921 |
|
MD5 | 7b2d7dd82ad2b9eec2e8a532e05045dd |
|
BLAKE2b-256 | 5e5e0baea7276be3753cbfa38bd005fd1b052dcf6fad20aa9676460b79bc979e |