Skip to main content

缓存呈现的页面,包括支持 ETag 的标头

项目描述

介绍

TemplateCacheManager 旨在加快对内容视图的访问,同时确保不提供过时的内容。TemplateCacheManager 派生自 PageCacheManager。

TemplateCacheManager 和 PageCacheManager 的区别

模板缓存管理器

  • 独立于 CacheSetup 产品。

  • 还向客户端返回 ETag,因此支持级联和多个 ETag 缓存。因此,客户端、代理(例如 Squid)和 TemplateCacheManager 可以缓存内容的各个视图,包括标题信息。

  • 生成统计报告

安装

TemplateCacheManager 专为缓存内容对象的视图而设计。与 RAMCacheManager 不同,TemplateCacheManager 缓存视图生成的 html 以及 HTTP 标头。

TemplateCacheManager 建立在 Zope 的标准缓存管理器机制之上。与 RAMCacheManager 一样,您将一些页面模板与缓存管理器相关联并配置属性。TemplateCacheManager 需要一个额外的步骤:要缓存的内容必须通过缓存策略生成一个 ETag。TemplateCacheManager 会查找 ID 为caching_policy_manager 的 CachingPolicyManager。如果找到它,它就会为当前模板 + 内容对象组合获取一个 ETag。然后将此 ETag 用作缓存中的索引。如果您没有为您的内容生成 ETag,您的页面将不会被缓存。

如果您创建的 ETag 在内容更改时也会更改,那么缓存提供的内容将保持新鲜。在 ETag 更改后第一次命中页面时会出现缓存未命中,然后对新修改的内容视图的后续命中将反映新版本。如果您的内容视图是个性化的,您将希望您的 ETag 因当前用户而异。具有这些属性的良好 ETag 如下(示例目录中的 INSTALL.txt):

ETag = 当前认证用户的 id + 分隔符 + 最后修改时间

对于内容 + 分隔符 + 当前时间四舍五入到最接近的小时

在 ETag 中使用 id 意味着每个用户对内容对象的看法都会有不同的 ETag,因此每个人都会得到不同的缓存对象。使用修改时间意味着每次内容对象更改时,都会生成不同的 ETag,从而导致从缓存中拉出新副本。使用四舍五入到最接近小时的当前时间意味着缓存不会在超过一个小时内提供任何内容。

额外奖励:

TemplateCacheManager 处理由 CachingPolicyManager 配置的条件 GET。如果传入请求的 If-None-Match 标头带有与内容对象的当前 ETag 匹配的 ETag,则 TemplateCacheManager 将设置状态 304 标头(未修改)并且将仅返回匹配的 ETag 而不是内容。如果您使用支持 ETag 的代理(例如 squid),则需要此功能,该代理可以缓存和处理由 ETag 和 Vary 标头索引的多个内容视图。

关于 ETag 的信息

基本信息:

http://devel.squid-cache.org/etag/etag-header.html

squid 2.x 的多个 ETag 错误(包括补丁):

http://www.squid-cache.org/bugs/show_bug.cgi?id=2112 http://www.squid-cache.org/bugs/attachment.cgi?id=1504

2008 年 7 月 4 日星期五 23:46:54 +0200 添加了配置示例 (s.examples/INSTALL.txt)

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

Products.TemplateCacheManager-0.1dev-r67896.tar.gz (15.1 kB 查看哈希

已上传 source

内置分布

Products.TemplateCacheManager-0.1dev_r67896-py2.4.egg (27.8 kB 查看哈希

已上传 2 4