heyday/silverstripe-hashpath

Hash path在SilverStripe模板中提供了一个功能,该功能接受一个资产路径,并返回包含该资产哈希值的路径

安装次数: 70,267

依赖项: 0

建议者: 0

安全: 0

星标: 15

关注者: 29

分支: 11

公开问题: 0

类型:silverstripe-vendormodule

3.1.0 2023-09-11 00:07 UTC

This package is auto-updated.

Last update: 2024-09-11 02:48:09 UTC


README

Hash Path在SilverStripe模板中提供了一个功能,该功能接受一个资产路径,并返回一个附加了文件哈希值的修改后路径。结合Web服务器的重写规则,可以通过更改发送到浏览器的文件URL来完全避免浏览器缓存,因为文件在更改时其URL也会更改。

// Template:
$HashPath(css/style.css)

// Rendered:                          ↙ File hash
/themes/my-theme/css/style.vpOQ8F6ybteKQQYND5dzZQ.css

许可证

Hash Path遵循MIT许可证

安装

Composer

使用Composer安装非常简单,

在你的SilverStripe项目根目录中创建或编辑一个composer.json文件,并确保以下内容存在。

{
  "require": {
    "heyday/silverstripe-hashpath": "^3.0.0"
  }
}

完成此步骤后,在终端或类似的环境中导航到SilverStripe根目录,并运行composer installcomposer update,具体取决于你是否已经使用了Composer。

Web服务器配置

由于Hash Path返回的路径在磁盘上不存在,因此需要在Web服务器中添加一个重写规则,以便返回原始给Hash Path的文件。URL格式是在文件扩展名之前插入.v[hash],因此最终结果是.v[hash].[extension]

Apache

以下内容需要添加到你的.htaccess文件或虚拟主机配置中。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)\.(v[A-Za-z0-9]+)\.(js|css|png|jpg|gif)$ $1.$3 [L]
</IfModule>

Nginx

# Hashpath module
location /themes {
	rewrite "^(.+)\.(?:v\w{10,32})\.(js|css|png|jpg|gif)$" $1.$2 last;
	try_files $uri =404;
}

如何使用

如果设置了正确的主题,你只需调用$HashPath,并将资产相对于当前主题的位置作为第一个参数。

例如,对于位于themes/my-theme/js/general.js的文件,并且当前主题为my-theme,使用

<script src="$HashPath("js/general.js")"></script>

将会得到

<script src="/themes/my-theme/js/general.v54473acf909c645bb14f011d86a47733.js"></script>

如果你想要使用一个与当前主题无关的资产,使用

<script src="$HashPath("/my-module/js/general.js", 0)"></script>

单元测试

PHP Unit现在随SS提供

运行单元测试

从命令行

vendor/bin/phpunit silverstripe-hashpath/tests

贡献

代码规范

此项目遵循以下标准定义