bnomei/kirby3-fingerprint

文件方法和 css/js 辅助工具,用于添加缓存破坏哈希和可选的子资源完整性到文件

3.2.0 2022-10-27 12:01 UTC

README

Release Downloads Build Status Coverage Status Maintainability Twitter

文件方法以及 css/js 辅助工具,用于向文件添加缓存破坏哈希和可选的子资源完整性

商业使用


支持开源!

此插件免费,但如果您将其用于商业项目,请考虑赞助我或捐款。
如果我的工作帮助您赚了钱,那么我觉得我可能也应该得到一点回报,对吧?

行善。分享一点。谢谢。

—— Bruno
 

类似插件

以下插件可以进行缓存破坏,但它们不会缓存修改的文件时间戳,也不能执行 SRI 或为非 js/css 文件执行缓存破坏。

安装

  • master.zip 解压缩到文件夹 site/plugins/kirby3-fingerprint
  • git submodule add https://github.com/bnomei/kirby3-fingerprint.git site/plugins/kirby3-fingerprint
  • composer require bnomei/kirby3-fingerprint

使用

此插件 不会 覆盖内置的 js/css 辅助工具。当需要时使用 Bnomei\Fingerprint::cssBnomei\Fingerprint::js

echo Bnomei\Fingerprint::css('/assets/css/index.css');
// <style> element with https://../assets/css/index.css?v=1203291283

echo Bnomei\Fingerprint::js('/assets/js/index.min.js');
// <link> element https://../assets/js/index.min.js?v=1203291283

echo Bnomei\Fingerprint::url('/assets/css/index.css');
// raw url https://../assets/css/index.css?v=1203291283

echo $page->file('ukulele.pdf')->fingerprint();
// https://../ukulele.pdf?v=1203291283

echo $page->file('ukulele.pdf')->integrity();
// sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC

// generate sri from local file
echo Bnomei\Fingerprint::js(
    '/assets/js/index.min.js',
    [
        "integrity" => true
    ]
);
/*
<script src="https://../assets/js/index.min.js"

    crossorigin="anonymous"></script>
*/

echo Bnomei\Fingerprint::js(
    'https://external.cdn/framework.min.js',
    [
        "integrity" => "sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
    ]
);
/*
<script src="https://external.cdn/framework.min.js"

    crossorigin="anonymous"></script>
*/

设置

查询选项:true(默认)

myfile.js?v={HASH}

这是默认设置,因为它不需要对您的服务器进行额外更改即可正常工作,但请注意,查询字符串并不完美

查询选项:false

如果您禁用了查询选项,您还需要添加 Apache 或 Nginx 规则。这些规则将重定向带哈希的 css 和 js 文件到磁盘上的资产。

.htaccess - 在 RewriteBase 语句之后直接放置此内容

# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.([0-9a-z]{32})\.(js|css)$ $1.$3 [L]

Nginx 虚拟主机设置

location ~ (.+)\.(?:\w+)\.(js|css)$ {
    try_files $uri $1.$2;
}

查询选项:字符串

您还可以转发一个 json 编码的清单文件的路径,插件将加载其中定义的任何哈希。这对于 gulp-rev 或与 laravel mix 版本控制 一同使用非常有效。

缓存 & 性能

如果全局调试模式为 true,则插件将清除其缓存并停止写入任何更多缓存。

哈希和 SRI 值被缓存,并且仅在原始文件被修改时才更新。如果您还有 AutoID 插件,并且文件有一个 autoid 字段,则修改查找的成本几乎为零。

免责声明

本插件提供“原样”且不提供任何保证。请在自己的风险下使用,并在将其用于生产环境之前始终自行测试。如果您发现任何问题,请创建新问题

许可证

MIT

不建议在任何宣传种族主义、性别歧视、恐同、动物虐待、暴力或其他任何形式仇恨言论的项目中使用此插件。

致谢