用于帮助开发使用边侧包含的网站的工具
项目描述
Django应用程序,用于处理边侧包含 (ESI)
用法
ESI允许您指定需要不同缓存策略的网站部分,并将其发送到智能缓存层进行渲染。
例如,如果您想要发送一个除了欢迎信息外对每个用户都相同的页面,您可以这样渲染该信息
<html> <body> <esi:include "/esi/welcome-message" /> ... the rest of the page ... </body> </html>
例如,使用Varnish等智能代理和随armstrong.esi一起包含的中间件可以缓存此页面,并发送请求到/esi/welcome-message进行个性化。下一个访问此页面的用户将获得缓存的版本,而您的应用程序服务器只需要渲染/esi/welcome-message
armstrong.esi提供了一个模板标签,用于以与Django的url标签相同的语法渲染正确的URL。例如,上面的例子变成了:
{% load esi %} <html> <body> {% esi welcome_message %} ... the rest of the page ... </body> </html>
这会将我们的{% esi %}标签替换为一个指向该视图URL的<esi:include>标签。
与Varnish一起使用
Varnish可以与armstrong.esi相对容易地集成。如果页面请求中有esi标签,EsiHeaderMiddleware将设置‘X-ESI’头为‘true’。为了在需要esi处理的页面中启用varnish中的esi处理,请将以下内容添加到您的vcl_fetch方法中:
if (beresp.http.X-ESI) { set beresp.do_esi = true; }
不使用ESI加载
模板标签读取DEBUG设置值,如果设置为True,则使用当前请求渲染视图而不是包含<esi:include>标签。这使得在开发中查看完整渲染的页面变得容易。
安装与配置
您可以使用pip安装armstrong.esi的最新版本。
pip install armstrong.apps.articles
请确保将armstrong.esi添加到您的INSTALLED_APPS中。您可以根据自己的喜好添加它。这是一个复制粘贴的解决方案。
INSTALLED_APPS += ["armstrong.esi"]
您还必须启用armstrong.esi中间件。为此,请将以下行添加到您的MIDDLEWARE_CLASSES中:
'armstrong.esi.middleware.EsiMiddleware'
贡献
创造一些令人惊叹的东西——改进代码,添加一些功能,等等(这是最难的部分)。
创建一个主题分支以存放您的更改
将所有提交放入新的主题分支中
提交一个pull request
项目状态
Armstrong是一个开源新闻平台,任何组织都可以免费使用。它是德克萨斯州新闻报(Texas Tribune)和湾公民(Bay Citizen)之间的合作成果,以及约翰·S·和詹姆斯·L·奈特基金会(John S. and James L. Knight Foundation)的资助。首次发布计划于2011年6月。
要跟踪开发,请务必加入Google Group。
armstrong.apps.articles是Armstrong项目的一部分。你很可能正在寻找那个。
许可证
版权所有 2011-2012 湾公民和德克萨斯州新闻报
在Apache License,版本2.0(“许可证”)下授权;除非适用法律要求或书面同意,否则不得使用此文件,除非符合许可证。您可以在以下位置获取许可证副本:
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证下管理许可和限制的具体语言,请参阅许可证。