如何为资产使用自定义版本策略

编辑本页

如何为资产使用自定义版本策略

资产版本控制是一种技术,通过在静态资产(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娱乐下载组件资产VersionStrategyVersionStrategyInterfaceGulpBusterVersionStrategy实现了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许可证。
ob娱乐下载Symfony 5.4支持通过私人Packagist