缓存呈现的页面,包括支持ETag的页眉
Products.TemplateCacheManager的Python项目详细描述
简介
TemplateCacheManager旨在加快对内容视图的访问 同时确保不提供过时的内容 起来。TemplateCacheManager派生自PageCacheManager。
TemplateCacheManager和PageCacheManager之间的区别
模板缓存管理器
- is independent of the CacheSetup product.
- returns also the ETag to the clients, supports therefore cascading and and multiple ETag caching. Client, Proxy (e.g. Squid) and TemplateCacheManager can therefore cache individual views of content including header information.
- generates statistic reports
安装
TemplateCacheManager是专门为缓存内容视图而设计的 物体。与ramcachemanager不同,templatecachemanager缓存 由视图以及http头生成的html。
TemplateCacheManager基于Zope的标准缓存管理器机制。 与ramcachemanager一样,可以将一些页面模板与缓存相关联 管理和配置属性。TemplateCacheManager需要 额外步骤:要缓存的内容必须通过缓存生成ETag 政策。TemplateCacheManager查找ID为的cachingPolicyManager 缓存策略管理器。如果它找到了,它就会得到 当前模板+内容对象组合。然后使用这个ETag 作为缓存的索引。如果没有为生成ETag 你的内容,你的页面将不会被缓存。
如果创建的ETag在内容更改时更改,则 缓存提供的内容将保持新鲜。会有一个 缓存未命中在ETag更改后第一次命中页面时,然后 对新修改的内容视图的后续点击将反映新的 版本。如果您的内容视图是个性化的,您将需要您的etag 根据当前用户的不同而变化。具有这些特性的良好ETag 如下所示(示例目录中的s.install.txt):
- ETag = id of currently authenticated user + delimiter + last modified time
- for content + delimiter + current time rounded to the nearest hour
在etag中使用id意味着每个用户对内容的视图 对象将具有不同的ETag,因此每个人都将得到不同的ETag 缓存的对象。修改时间的使用意味着每次 content对象发生变化,它将生成不同的etag,因此 将导致从缓存中提取新副本。使用 当前时间四舍五入到最近的小时意味着 一个多小时都在缓存里。
附加奖金:
templatecachemanager处理由 cachingpolicymanager公司。如果传入请求具有if none匹配项 具有与内容对象的当前ETag匹配的ETag的头, TemplateCacheManager将设置状态304头(未修改)和 只返回匹配的ETag而不是内容。这个 如果使用支持etag的代理,则需要此功能 (例如squid),它可以缓存和处理内容的多个视图 由ETag和vary header索引。