clubstudioltd / craft3-asset-rev
Requires
- craftcms/cms: ^3.0.0-beta.8
This package is auto-updated.
Last update: 2019-02-20 19:47:44 UTC
README
Craft 3 Asset Rev (缓存破坏)
已弃用: 请使用 https://github.com/clubstudioltd/craft-asset-rev。
一个为Craft 3提供的Twig扩展,它通过附加查询字符串或用修订版文件名替换原始文件名来帮助您缓存破坏您的资产,正如它们在JSON清单文件中定义的那样。
清单文件通常由Grunt/Gulp模块生成,例如 grunt-filerev-assets 或 gulp-rev。
为什么?
为了加快您页面的加载时间,您可以在图像、样式表和脚本上设置一个长期有效的过期头。然而,当您更新这些资产时,您需要更新它们的文件名以强制浏览器下载更新版本。
使用清单文件是推荐的方法 - 您可以在这里了解为什么使用查询字符串不是最佳选择 这里。
安装
通过composer安装
composer require clubstudioltd/craft3-asset-rev
或者,下载插件并将 src
目录的内容复制到您的 plugins
目录中名为 assetrev
的文件夹中。
请确保从Craft插件设置页面激活插件。一旦激活,您可能需要在插件配置中指定资产清单文件的自定义路径。
配置
插件附带一个 config.php
文件,该文件定义了一些合理的默认值。
如果您想设置自己的值,您应该在 config
目录中创建一个 assetrev.php
文件。此文件的 contents 将与插件默认值合并,因此您只需指定您想覆盖的设置的值。
清单路径
manifestPath
是Craft应该查找您的清单文件的位置。非绝对路径将相对于Craft安装的基础路径(无论 CRAFT_BASE_PATH
设置为何)。
资产基础路径
assetsBasePath
是您资产的基准路径。同样,这也相对于您的craft基础目录,除非您提供绝对目录路径。
资产URL前缀
assetUrlPrefix
将被添加到 rev()
的输出之前。
注意: 您可以使用 getenv()
函数使用您在 .env
文件中设置的任何环境变量。
示例 assetrev.php 配置文件
<?php
return array(
'manifestPath' => 'resources/assets/assets.json',
'assetsBasePath' => '../public/build/',
'assetUrlPrefix' => getenv('ASSET_URL_PREFIX'),
);
用法
一旦激活并配置后,您可以在模板中使用 rev()
函数。
<link rel="stylesheet" href="{{ rev('css/main.css') }}">
在某些情况下(例如,构建在清单文件中不可用的额外文件或通过代理提供服务的文件),您可以通过将可选的 $strict
参数设置为 false
来防止扩展抛出关于缺失文件映射的异常。
<link rel="stylesheet" href="{{ rev('css/not-available-in-manifest.css', false) }}">
如果文件在清单文件中不存在,将附加一个查询字符串(见下文):css/not-available-in-manifest.css?1473534554
。
清单文件
css/main.css
将被替换为在您的资产清单 .json 文件中定义的相应哈希文件名。
如果您的清单文件内容是...
{
"css/main.css": "css/main.a9961d38.css",
"js/main.js": "js/main.786087f5.js"
}
那么 rev('css/main.css')
将展开为 css/main.a9961d38.css
。
查询字符串回退
如果插件找不到有效的清单文件,它将回退到根据上次修改时间在文件中附加查询字符串。在这种情况下,rev('css/main.css')
将展开为类似于 css/main.css?1473534554
的内容。