fballiano/openmage-cssjs-versioning

OpenMage(以及Magento 1.9)的CSS/JS版本管理模块

0.3.0 2024-04-17 22:43 UTC

This package is auto-updated.

Last update: 2024-09-06 21:35:52 UTC


README

简要描述

为所有的CSS/JS添加?v=,其中v的值为最新的git提交哈希值。

原因

为了使搜索引擎高兴,你需要使用非常长的浏览器缓存有效期(带或不带CDN),但如果告诉浏览器缓存一个css或js一年,然后你需要修改它?浏览器将不会接收新版本,你的网站将会出错。

我的解决方案是在所有的CSS/JS URL中添加一个v=xxx参数,这样缓存就会强制更新,新版本的文件将被存储在缓存中,直到下一次更新。

为了可靠和一致地做到这一点,我创建了这个模块,它拦截了http_response_send_before事件,尽可能地使用preg_regex,以实现尽可能的性能,添加v=xxx参数。

这种方法也应该与全页缓存模块一起工作。

功能

如何生成用于v=xxx参数的版本号?

此模块支持两种方法

  1. 使用最新的Git提交哈希(仅前6个字符)作为版本号
  2. 如果失败,则使用时间戳

首选git方法,因为生成的版本号只有在向仓库推送新更改时才会更改。然而,为了工作,OpenMage基本目录也必须是Git项目根目录,并且.git文件夹必须存在于所有你需要此功能工作的服务器上。

总结

  • 自动读取最后的Git提交哈希,提取前6个字符
  • 将此版本号保存在OpenMage配置缓存中1小时(如果你刷新配置缓存,也会刷新此值),以便尽可能减少对文件系统的冲击
  • 如果git方法不工作,则版本号因当前时间戳(并缓存24小时)
  • 解析输出HTML并拦截所有<script<link标签,提取URL并添加v=xxx参数(使用?v&v相应地)
  • 它仅捕获具有src参数的<script标签和具有href参数的<link标签,但只有当链接类型为iconstylesheet时(我们必须避免错误地修改规范)

限制

  • 您还必须在生产服务器上具有.git文件夹(请确保在您的.htaccess中拒绝对.git/*的HTTP访问)

警告

此模块“原样提供”,我不会对任何问题或损坏负责。

安装

通过composer(composer require fballiano/openmage-cssjs-versioning)、modman(modman clone https://github.com/fballiano/openmage-cssjs-versioning)或您喜欢的任何其他方式安装

支持

如果您对此扩展有任何问题,请在GitHub上提交问题。

贡献

任何贡献都将非常受赞赏。最佳贡献代码的方式是在GitHub上打开一个拉取请求

开发者

Fabrizio Balliano
http://fabrizioballiano.com
@fballiano

许可证

OSL - 开源软件许可3.0

版权

(c) Fabrizio Balliano