指南/缓存破坏者

一个Magento模块,通过使用HTML5模板社区中概述的最佳实践,方便自动从HTTP缓存中清除静态资源,如浏览器缓存、CDN、Varnish等。

安装: 529

依赖项: 0

建议者: 0

安全: 0

星标: 125

关注者: 12

分支: 33

类型:magento-module

v1.0.1 2015-11-06 10:51 UTC

README

Cachebuster是一个Magento模块,通过使用HTML5模板社区中概述的最佳实践,方便自动从HTTP缓存中清除静态资源,如浏览器缓存、CDN、Varnish等。

参见“基于文件名的缓存破坏”部分:https://github.com/h5bp/server-configs-apache/blob/2.14.0/dist/.htaccess#L968

受影响的URL

  • /js/
  • /media/
  • /skin/

概述

该模块通过自动修改由Magento创建的静态文件URI,将文件的最后修改时间戳添加到文件名,提供缓存破坏功能。

示例用途

  • 当使用Cloudfront CDN时自动使缓存失效(有关出色的教程,请参阅http://www.aschroder.com/2011/05/magento-and-amazons-cloudfront-cdn-the-easy-way/
    • Amazon的Cloudfront CDN可以配置为使用源服务器,但根据其本质,它不会在缓存时间到期或您使用他们的API发送使缓存失效的请求之前刷新更新的文件。
  • 不再有浏览器缓存问题(例如:“我请求的那个CSS变化在哪里?” 你:“哦,你刷新了吗?”)
    • Magento的默认.htaccess文件使用远期过期头部,这有利于减少对服务器的请求次数,但也意味着即使没有CDN,您可能也因浏览器缓存而浪费了时间,实际上那根本不是问题。

安装

  • 将模块文件复制到您的应用程序中
  • 配置apache以启用解决新文件名的必要mod_rewrite规则
  • 在Magento配置中启用模块

配置

此模块通过“系统”配置部分进行配置

System -> Configuration -> Advanced -> System -> Cachebuster Settings
  • 启用缓存破坏者
    • 启用模块在前端重写URL的行为。在启用此设置之前,必须配置您的mod_rewrite规则。
  • 文件扩展名
    • 以逗号分隔的文件扩展名列表,这些扩展名将应用时间戳进行重写。此处配置的扩展名必须在您的重写规则中定义。

注意:此行为仅在前端生效,管理员区域静态文件URL不会处理

mod_rewrite配置

当使用此模块时,您的商店需要启用以下mod_rewrite规则,可能通过.htaccess文件或虚拟主机定义。

<IfModule mod_rewrite.c>

############################################
## rewrite files for magento cachebuster

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpeg|jpg|gif)$ $1.$3 [L]

</IfModule>

如果您正在使用默认的media.htaccess文件,该文件将缺失的URL路由到Magento的get.php以处理可下载产品,您还需要将规则添加到您的media目录中的.htaccess文件。

注意:此媒体目录中的重写条件将破坏上述扩展名的可下载产品提供的保护。如果您的商店销售具有上述扩展名的可下载产品,您可能需要调整这些条件。

nginx配置

对于nginx,您需要将以下规则添加到您的站点定义中。

location ~* (.+)\.(\d+)\.(js|css|png|jpg|jpeg|gif)$ {
    try_files $uri $1.$3;
}

许可证

遵循Apache许可证,版本2.0