如何为资产使用自定义版本策略
编辑本页如何为资产使用自定义版本策略
资产版本控制是一种技术,通过在静态资产(CSS、JavaScript、图像等)的URL中添加版本标识符来提高web应用程序的性能。当资产的内容发生变化时,它的标识符也会被修改,以迫使浏览器重新下载它,而不是重用缓存的资产。
如果应用程序需要高级版本控制,例如根据一些外部信息动态生成版本,则可以创建自己的版本策略。
请注意
ob娱乐下载Symfony提供了各种缓存破坏实现版本,version_format,json_manifest_path配置选项。
创建自己的资产版本策略
下面的示例显示如何创建兼容的版本策略gulp-buster.该工具定义了一个名为busters.json
它将每个资产文件映射到它的内容散列:
1 2 3 4
{“js / script.js”:“f9c7afd05729f10f55b689f36bb20172”,“css / style.css”:“91 cd067f79a5839536b46c494c4272d8”}
实现VersionStrategyInterface
资产版本策略是PHP类,它们实现VersionStrategyInterface.在本例中,类的构造函数将生成的清单文件的路径作为参数gulp-buster以及生成的版本字符串的格式:
12 34 56 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
/ / src /资产/ VersionStrategy / GulpBusterVersionStrategy.php名称空间应用程序\资产\VersionStrategy;使用ob娱乐下载\组件\资产\VersionStrategy\VersionStrategyInterface;类GulpBusterVersionStrategy实现了VersionStrategyInterface{/ * * *@var字符串* /私人$manifestPath;/ * * *@var字符串* /私人$格式;/ * * *@varstring [] * /私人$散列;/ * * *@param字符串$manifestPath *@param字符串|null $format */公共函数__construct(字符串$manifestPath、字符串$格式= null){$这->manifestPath =$manifestPath;$这->格式=$格式吗?' % s ?% s的;}公共函数getVersion(字符串$路径){如果(!是_array($这->散列)){$这->散列=$这->loadManifest ();}返回$这->散列($路径) ? ?”;}公共函数applyVersion(字符串$路径){$版本=$这->getVersion ($路径);如果(”===$版本) {返回$路径;}返回sprintf ($这->格式,$路径,$版本);}私人函数loadManifest(){返回json_decode (file_get_contents ($这->manifestPath),真正的);}}
注册策略服务
创建策略PHP类之后,将其注册为Symfony服务。ob娱乐下载
- YAML
- XML
- PHP
1 2 3 4 5 6
#配置/ services.yaml服务:应用\ \ VersionStrategy \ GulpBusterVersionStrategy资产:参数:-“% kernel.project_dir % / busters.json”-“% % s ?version = % % s "
最后,为所有或部分应用程序资产启用新的资产版本控制资产包多亏了version_strategy选择:
- YAML
- XML
- PHP
1 2 3 4 5
#配置/包/ framework.yaml框架:#……资产:version_strategy:“应用\ \ VersionStrategy \ GulpBusterVersionStrategy资产”
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。