nexcess / magento-turpentine
Magento 的 Varnish 扩展程序。
Requires
Replaces
- connect20/nexcessnet_turpentine: 0.7.5
- dev-master
- 0.7.5
- 0.7.4
- 0.7.3
- 0.7.2
- 0.7.1
- 0.7.0
- 0.6.9
- 0.6.8
- 0.6.7
- 0.6.6
- 0.6.5
- 0.6.4
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- dev-devel
- dev-revert-1453-master
- dev-scrutinizer-patch-3
- dev-revert-1132-fix-1129
- dev-scrutinizer-patch-2
- dev-scrutinizer-patch-1
- dev-devel-varnish4
- dev-Strategery-Inc-damian/cache-management-extended
- dev-feature-better-1.8-compat
- dev-fix-1.8-compat
This package is not auto-updated.
Last update: 2024-09-26 19:41:22 UTC
README
Turpentine 是一个用于 Magento 的全页缓存扩展程序,它与 Varnish(一个非常快速的缓存反向代理)配合使用。默认情况下,Varnish 不缓存带有 cookie 的请求,而 Magento 会随每个请求发送 frontend cookie,导致 Varnish 缓存的命中率接近于零。Turpentine 配置 Varnish 以与 Magento 一起工作,并修改 Magento 的行为,以显著提高缓存命中率。
注意,尽管此扩展程序现在被认为是 稳定的,但由于可能需要为其他扩展程序添加的块添加自定义 ESI 策略,因此强烈建议在将它们部署到生产站点之前在开发/预发布站点上对其进行测试。
功能
- 完整页面缓存,通过 Varnish ESI 和/或 AJAX 进行打孔,甚至对已登录访客也是如此
- 可通过标准 Magento 方法配置(管理系统的配置和布局 XML),大多数情况下无需手动编辑 Varnish 配置
- 能够动态生成并应用新的 Varnish VCL(配置),无需重新启动/更改 Varnish 的配置文件或刷新缓存
- 通过 URL 或参数(SID、商店等)阻止缓存请求
- 通过 URL 和单个块的 TTL 配置缓存 TTL
- 支持多个 Varnish 实例进行集群使用
- 在操作(如保存产品/目录/ CMS 页面后)上自动清除缓存
- 支持非根 Magento 安装(即将 Magento 放在 /store/ 而不是 /)和多商店/多站点设置
- 支持用于缓存预热站点的爬虫,并包括一个(基本的)内置站点爬虫
- 通过 SSL 支持 通过 Pound 或 Nginx
要求
- Magento Community Edition 1.6+ 或 Magento Enterprise Edition 1.11+
- Varnish 2.1+(包括 3.0+)
安装 & 使用
支持
如果您遇到问题,请阅读 常见问题解答,然后在您仍然需要帮助的情况下,在 GitHub 的 问题跟踪器 中打开一个错误报告。
请勿使用 Magento Connect 的评论或(尤其是)问答来获取支持。我无法回复评论和问答的审核非常缓慢。
贡献
如果您为 Turpentine 提供了修复或功能,请通过 GitHub 向 devel 分支提交一个拉取请求。 master 分支仅用于稳定版本。请确保新代码遵循与现有代码相同的样式和约定。
它是如何工作的
扩展程序通过两部分工作,页面缓存和块(ESI/AJAX)缓存。让我们简要看一下它们是如何工作的
对于页面,Varnish 首先检查访问者是否发送了 frontend
cookie。如果没有发送,Varnish 将为它们生成一个新的会话令牌。然后从缓存(如果不在缓存中则从后端获取)中提供页面,任何具有 ESI 策略的块通过 ESI 填充。请注意,对于被识别为爬虫的客户端,将跳过 cookie 检查(请参阅 爬虫 IP 地址
和 爬虫用户代理
设置)。
对于块,扩展程序在 Magento 中监听 core_block_abstract_to_html_before
事件。当此事件被触发时,扩展程序会查看附加到该事件的块,如果为该块定义了 ESI 策略,则将块的模板替换为简单的 ESI(或 AJAX)模板,告知 Varnish 从另一个 URL 拉取块内容。然后 Varnish 向该 URL 发出另一个请求以获取该块的内容,该内容可以单独从页面缓存,并且可能因不同的访问者/客户端而异。
注意事项和限制
- Turpentine 无法直接帮助 “添加商品到购物车” 或 “结账” 等操作的速度。它只能缓存,因此它只能提高网站浏览的速度。但它将大大减少后端的负载,因此对于高负载网站,它可以为后端资源释放足够的空间,从而对“操作”产生明显的影响。
- 使用 Varnish 2.1.x 时存在一些技术限制:外部 ESI 请求不会被阻止,并且 ESI 策略中按块设置的 TTL 不受尊重(所有块都使用默认的 TTL)
- Turpentine 的核心部分(缓存和 ESI/AJAX 注入)在 Magento CE 1.5 下运行,但由于事件名称的变化,大部分辅助功能无法工作。尽管如此,在了解它不受支持以及需要手动执行哪些操作的情况下,仍然可以使用 Turpentine 与 Magento CE 1.5 一起使用。需要注意的是,缓存刷新(自动和手动)和缓存预热(由于缺少触发缓存刷新的事件)都不工作。
- 匿名块无法进行打孔。对于 CMS 页面,建议您将块包含在页面的布局更新 XML 中并为其命名,然后它可以像正常一样具有 ESI 策略。
已知问题
- 日志和统计信息将显示所有请求都来自同一个 IP 地址(通常是 localhost/127.0.0.1)。应可以使用 Apache 的 mod_remoteip 或 mod_rpaf 来解决这个问题。
演示
请参阅 演示网站 维基页面。
如果您在(生产网站)使用 Turpentine,请随意将您的网站添加到列表中!
许可证
代码根据 GPLv2+ 许可,其中大部分 ESI 特定代码取自 Hugues Alary 的 Magento-Varnish 扩展,该扩展许可为 GPLv3。