Skip to main content

Zope 的缓存管理器

项目描述

https://github.com/zopefoundation/Products.StandardCacheManagers/actions/workflows/tests.yml/badge.svg https://coveralls.io/repos/github/zopefoundation/Products.StandardCacheManagers/badge.svg?branch=master PyPI 上的当前版本 支持的 Python 版本

概述

这个包为 Zope 提供了两个缓存管理器。一个 RAMCacheManager 和一个 Accelerated HTTP 缓存管理器,它将 HTTP 缓存标头添加到响应中。

以下内容适用于对 RAMCacheManager 内部感兴趣的人,例如维护者。

介绍

缓存框架不以任何方式解释数据,它只是作为传递给它的数据的通用存储。它会尝试检查数据是否可腌制。IOW,只有可腌制的数据是可缓存的。

RAMCacheManager 背后的想法是它应该在线程之间共享,这样相同的对象就不会在每个线程中缓存。这是通过将缓存数据结构本身存储为模块级变量 (RAMCacheManager.caches) 来实现的。当然,这需要锁定对该数据结构的修改。

每个 RAMCacheManager 实例在 RAMCacheManager.caches 字典中都有一个缓存。创建缓存管理器时会生成一个唯一的 __cacheid,它用作缓存的键。

对象层次结构

RAMCacheManager
内存缓存
对象缓存条目

缓存入口

RAMCacheManager 是一个持久的位置对象。它在创建时被分配了一个唯一的 __cacheid。然后将其用作在全局缓存字典中查找相应 RAMCache 对象的键。因此,每个 RAMCacheManager 都有一个与之相关的 RAMCache。

RAMCache 是一个易失性缓存,对每个 RAMCacheManager 都是唯一的。它在线程之间共享并执行所有锁定。它有一个写锁。虽然阅读时没有锁定。RAMCache 保存由缓存对象的物理路径索引的 ObjectCacheEntries 字典。

ObjectCacheEntries 是单个对象的缓存值的容器。其中的值由 view_name、有趣的请求变量和传递给 Cache.ZCache_set() 的额外关键字的元组索引。

CacheEntry 是单个缓存值的包装器。它存储数据本身、创建时间、view_name 并保持访问计数。

变更日志

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)

  • 更多包清理

  • 为 Zope 4 清理 ZMI 视图

  • 由于 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-4.1.1.tar.gz (19.3 kB 查看哈希

已上传 source

内置分布

Products.StandardCacheManagers-4.1.1-py2.py3-none-any.whl (25.0 kB 查看哈希

已上传 py2 py3