跳转到主要内容

一个简单的两阶段模板渲染应用程序,适用于缓存经过身份验证的请求。

项目描述

Build Status

一个简单的两阶段模板渲染应用程序,适用于缓存经过身份验证的请求。

如何工作

Adrian Holovaty在这篇博客文章和Honza Kral之前描述了这种技术。想法是首先渲染模板,其中某些块被标记为“阶段”,这样它们将不会被渲染,并且将保持有效的模板代码,可以在第二次传递时进行渲染。

第二次传递从缓存中检索部分渲染的模板,并对其执行第二次渲染,使用RequestContext为模板提供特定于用户的上下文。这通过绕过需要使用CACHE_MIDDLEWARE_ANONYMOUS_ONLY设置的需要,使得生成具有特定于用户内容的页面变得非常快。

本实现使用一个秘密分隔符,使其能够抵御模板代码注入漏洞的可能性,因为它只将任何给定的文本通过模板解析器传递一次。分阶段的块还可以包含缓存的上下文。

基本实现

django-phased 包含一个模板标签 phased,它定义了在第二阶段要解析的块。中间件类 PhasedRenderMiddleware 处理响应以渲染第一次渲染中跳过的部分。

还包括一个特殊的 UpdateCacheMiddleware 子类,当它更新缓存时会从响应中删除“Vary: Cookie”头。如果用标准 UpdateCacheMiddleware 替换它,将防止缓存中间件根据 Cookie 变更缓存键,从而启用认证会话中页面的缓存。

项目详情


下载文件

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

源分发

django-phased-0.6.1.tar.gz (11.3 kB 查看散列)

上传时间

由以下支持