与memcache相关的缓存工具和配置
项目描述
简介
本软件包结合了lovely.memcached和plone.memoize.ram的功能。它为EEA的Memcaches提供了装饰器和实用工具。该装饰器允许您设置由eea.cache所知的依赖关系。
内容
主要功能
扩展并覆盖 plone.memoize 缓存适配器以与 memcache 一起工作
提供扩展的 @cache 装饰器,支持
按方法覆盖缓存寿命
依赖字符串以批量无效化缓存
当触发 ObjectModifiedEvent 时自动无效化缓存
通过 URL 手动无效化缓存的可能
安装
将 eea.cache 添加到您的 buildout 的 eggs 和 zcml 部分,并重新运行 buildout
eggs = ... eea.cache zcml = ... eea.cache eea.cache-overrides
您可以从 https://github.com/eea/eea.cache/tree/master/buildouts/plone4 下载示例 buildout
在“站点设置”>“插件”中安装 eea.cache
启动 memcache
$ bin/memcached start
依赖关系
pylibmc(可选,以获得更好的性能)
源代码
- 最新源代码(与 Zope 2 兼容)
缓存装饰器
>>> def key(method, self): ... return method.__name__ >>> from eea.cache import cache >>> @cache(key, dependencies=["frontpage"]) ... def myMethod(num): ... return num*num
让我们清除任何正在运行的 memcache
>>> from eea.cache.event import InvalidateMemCacheEvent >>> from zope.event import notify >>> notify(InvalidateMemCacheEvent(raw=True, dependencies=['frontpage']))
现在我们的 myMethod 将通过方法“key”返回的键和依赖项“frontpage”进行缓存
>>> myMethod(2) 4 >>> myMethod(3) 4 >>> notify(InvalidateMemCacheEvent(raw=True, dependencies=['frontpage'])) >>> myMethod(3) 9
缓存生存期
默认情况下,您的内容在 memcache 中缓存一小时(3600秒)。您可以通过在 ZMI > portal_properties > site_properties 中添加一个 int 属性来更改此属性,属性名为 memcached_defaultLifetime,并将其值设置为 86400(一天)等。
按键覆盖缓存生存期
从 eea.cache 5.1 开始,您还可以传递一个包含持续时间的寿命键,这将覆盖来自门户属性或 lovely.memcached 的默认寿命 3600 秒
ex: in order to cache the result only for 4 minutes >>> @cache(key, dependencies=["frontpage"], lifetime=240) ... def myMethod(num): ... return num*num
无效化缓存
如果您为 BrowserView 方法或直接在 Zope 对象方法上使用缓存装饰器,则在对象被修改时(触发 ObjectModifiedEvent)将自动无效化缓存
>>> from Products.Five.browser import BrowserView >>> class XXX(BrowserView): ... @cache(key) ... def title(self): ... return self.context.title_or_id()
您可以通过向 @cache 装饰器提供 auto_invalidate 参数来禁用自动无效化
>>> @cache(key, auto_invalidate=False) ... def title(self): ... return self.context.title_or_id()
memcache.invalidate
为了手动无效化每个对象的 memcached 缓存,该包提供了一个名为 memcache.invalidate 的浏览器视图。它将无效化与当前对象 UID 相关的所有 memcached 方法
https://127.0.0.1:2020/Plone/front-page/memcache.invalidate
您还可以手动无效化相关项和反向引用
https://127.0.0.1:2020/Plone/front-page/memcache.invalidate/relatedItems https://127.0.0.1:2020/Plone/front-page/memcache.invalidate/backRefs
默认情况下,此方法可以由具有以下角色的用户调用
编辑器
共同编辑器
所有者
经理
varnish.invalidate
为了手动无效化每个对象的 memcached 缓存,该包提供了一个名为 varnish.invalidate 的浏览器视图。它将无效化与当前对象 UID 相关的所有 memcached 方法
https://127.0.0.1:2020/Plone/front-page/varnish.invalidate
您还可以手动无效化相关项和反向引用
https://127.0.0.1:2020/Plone/front-page/varnish.invalidate/relatedItems https://127.0.0.1:2020/Plone/front-page/varnish.invalidate/backRefs
默认情况下,此方法可以由具有以下角色的用户调用
编辑器
共同编辑器
所有者
经理
cache.invalidate
为了手动无效化每个对象的缓存(memcached 和 varnish),该包提供了一个名为 cache.invalidate 的浏览器视图。它将调用 memcache.invalidate 和 varnish.invalidate
https://127.0.0.1:2020/Plone/front-page/cache.invalidate
您还可以手动无效化相关项和反向引用
https://127.0.0.1:2020/Plone/front-page/cache.invalidate/relatedItems https://127.0.0.1:2020/Plone/front-page/cache.invalidate/backRefs
默认情况下,此方法可以由具有以下角色的用户调用
编辑器
共同编辑器
所有者
经理
cache.settings
每个对象都有一个缓存选项卡,您可以在其中手动选择要无效化的缓存。默认情况下,您可以无效化 memcache 和 varnish。您还有可能无效化相关项和反向引用的 memcache 和/或 varnish。
此表单可以扩展以包含更多选项。有关更详细的示例,请参阅 eea.pdf
configure.zcml:
<adapter zcml:condition="installed eea.cache" factory=".behavior.ExtraBehavior" /> <adapter zcml:condition="installed eea.cache" factory=".behavior.ExtraSettings" name="eea.pdf.cache.extender" />
behavior.py:
# Model class IExtraSettings(model.Schema): """ Extra settings """ pdf = schema.Bool( title=_(u"PDF"), description=_(u"Invalidate latest generated PDF file"), required=False, default=False ) # Behaviour class ExtraBehavior(object): implements(IExtraSettings) adapts(IPDFAware) def __init__(self, context): self.context = context @property def pdf(self): """ PDF """ return False @pdf.setter def pdf(self, value): """ Invalidate last generated PDF? """ if not value: return removePdfFiles() # Form class ExtraSettings(extensible.FormExtender): adapts(IPDFAware, ILayer, SettingsForm) def __init__(self, context, request, form): self.context = context self.request = request self.form = form def update(self): """ Extend form """ self.add(IExtraSettings, prefix="extra") self.move('pdf', after='varnish', prefix='extra')
版权和许可
原始代码的初始所有者是欧洲环境局(EEA)。版权所有。
eeacache(原始代码)是免费软件;您可以在自由软件基金会发布的 GNU 通用公共许可证条款下重新分配它和/或修改它;许可证的第二版或(根据您的选择)任何后续版本。
更多详细信息请参阅 docs/License.txt
资金和项目管理
EEA - 欧洲环境局(欧盟)
变更日志
9.5 - (2021-12-16)
更改:Plone 6 / pip 安装就绪。删除 includeDependencies [avoinea]
9.4 - (2020-03-10)
错误修复:避免缓存键包含 utf-8 字符时的错误 [ichim-dvaid refs #113458]
9.3 - (2020-03-04)
错误修复:删除对 plone.app.caching 的硬依赖:缺少 VARNISH.__name__ [avoinea]
9.2 - (2019-12-13)
错误修复:修复了卸载配置文件 [avoinea]
9.1 - (2019-11-21)
特性:使所有Dexterity内容缓存感知 [avoinea 引用 #110155]
特性:添加了对Python 3和Plone 5.2的支持 [alecghica 引用 #110155]
9.0 - (2019-06-06)
变更:缓存装饰器不再缓存空结果 [ichim-david 引用 #104467]
特性:缓存装饰器现在具有cache_empty参数,如果设置为True,则仍然会缓存空结果 [ichim-david 引用 #104467]
8.5 - (2019-01-28)
Jenkins:添加sonarqube步骤 [avoinea 引用 #101552]
变更:更新了指向eea.europa.eu的URL,使用https:// [alecghica 引用 #95849]
8.4 - (2018-06-13)
错误修复:lambda不接受任何参数(给出1个) [avoinea]
8.3 - (2018-06-06)
错误修复:修复了relatedItems缓存失效问题 [avoinea 引用 #95891]
8.2 - (2018-05-24)
错误修复:加快了对反向引用的缓存失效处理 [avoinea 引用 #95020]
特性:将invalidate_cache方法替换为使用eea.cache的方法 [alecghica 引用 #95020]
特性:“刷新此页”方法将您重定向回原始上下文 [alecghica 引用 #95020]
特性:在默认视图的上下文中调用cache.settings时,它也会使父缓存失效 [alecghica 引用 #95020]
错误修复:修复了在所有invalidate方法下,当存在损坏的关系且找不到对象而是None时的错误情况 [alecghica 引用 #95020]
8.1 - (2017-12-12)
变更:将eeacms/zptlint替换为eeacms/plone-test:4 zptlint [avoinea 引用 #90415]
8.0 - (2017-11-07)
变更:删除了Sphinx生成的文档 [petchesi-iulian 引用 #88212]
7.9 - (2017-05-22)
变更:修复了PyLint警告和错误 [valipod 引用 #84949]
7.8 - (2017-05-15)
变更:修复了PyLint警告和错误 [eduard-fironda 引用 #84949]
7.7 - (2017-04-24)
变更:更新了包信息 [eduard-fironda]
7.6 - (2016-05-19)
错误修复:修复了pylint警告 [chiridra 引用 #71940]
7.5 - (2015-08-18)
变更:自动在plone上下文中包含zcml,以便使此包能够在不将其添加到buildout zcml指令的情况下工作 [avoinea]
特性:实现了对pylibmc的支持 [razvanchitu 引用 #27571]
7.4 - (2015-03-17)
变更:在jenkins构建安装脚本中切换到curl [olimpiurob 引用 #22402]
变更:将jenkins构建安装脚本中的fetch URL更改为主EEA CPB存储库中的安装脚本 [olimpiurob 引用 #22402]
7.3 - (2014-12-23)
错误修复:修复了buildout执行的libevent下载 [ghicaale 引用 #21453]
7.2 - (2014-11-20)
变更:添加了InvalidateEverything事件,以便能够使memcache和varnish失效,而无需在ObjectModifiedEvent上添加订阅者 [voineali 引用 #21852, #21850, #21851]
变更:将缓存失效迁移到plone.z3cform,以便可以轻松扩展 [voineali 引用 #21630]
7.1 - (2014-10-01)
特性:现在在缓存表单中将invalidate Memcache显示为选项之一 [ghicaale 引用 #21143]
特性:创建了一个处理程序,用于仅使Varnish失效 [ghicaale 引用 #21143]
特性:改进了结果消息 [ghicaale 引用 #21143]
7.0 - (2014-08-27)
升级步骤:在“Plone > 网站设置 > 扩展”中安装EEA Cache [voineali 引用 #20678]
预升级步骤:在eeacache-overrides之前,在buildout zcml指令中添加eeacache [voineali 引用 #20678]
特性:添加了一个名为cache.invalidate的浏览器视图,允许编辑器手动使缓存失效(包括varnish和memcache)。它还支持相关项和反向引用的失效 [voineali 引用 #20678]
特性:添加了一个名为memcache.invalidate的浏览器视图,允许用户手动使memcache失效。它还支持相关项和反向引用memcache的失效 [voineali 引用 #20678]
变更:在ObjectModifiedEvent触发时,自动使与当前对象UID关联的所有缓存失效 [voineali 引用 #20678]
6.3 - (2014-01-21)
错误修复:从README.rst中移除了错误添加的块引用 [ichim-david 引用 #18064]
特性:添加了Sphinx生成的文档(页面模板格式) [batradav 引用 #9502]
6.2 - (2013-10-04)
变更:更新了zope导入,以符合eeacache对Plone 4.1的最小要求 [ichimdav 引用 #15651]
6.1 - (2013-06-17)
清理:使用logger.debug代替logger.info进行调试消息 [avoinea]
6.0 - (2013-05-20)
特性:移除了lovely.memcached依赖 [voineali 引用 #14343]
5.1 - (2013-02-04)
特性:添加了贡献者信息 [ciobabog 引用 #13892]
特性:增加了向缓存装饰器传递生命周期密钥的功能,以便在不同的默认生命周期内缓存它 [ichimdav #13677]
升级步骤:(可选)在 ZMI > portal_properties > site_properties 中添加一个名为 memcached_defaultLifetime 的 int 属性,并将其值设置为 86400(一天)或任何适合您需求的值。
特性:可以设置 memcached 默认生命周期,直到现在都是硬编码为一小时(3600秒)[voineali refs #13677]
5.0 - (2012-10-08)
更改:更新了 README 和 egg 的元数据 [voineali refs #5434]
4.3 - (2012-07-13)
错误修复:修复了 HISTORY.txt 文件中的标记 [ciobabog refs #5231]
4.2 - (2012-02-06)
无更改
4.0 - (2011-11-07)
特性:Plone 4.x 兼容版本 [ghicaale #4309]
0.3 - (2010-11-22)
错误修复:修复了测试命名空间,以便在 hudson 中使用 [voineali #3821]
0.2 - (2010-11-10)
错误修复:添加了模拟 memcache 客户端,以修复损坏的 doctests [voineali]
0.1 - (2009-11-10)
初始发布
项目详情
eeacache-9.5.zip 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | f99f0df26447c8920ba3973ce8e1a3f24bdc60fa94e46c72bc8e2d11963b38ee |
|
MD5 | b3411b477df78908f61a2a6ec33212ba |
|
BLAKE2b-256 | 3d990c12ef1011b1a7d189bc74f048713f193d7c22b21cf7779accb2463c73cc |