首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gulp/Symfony2 2:当缓存崩溃时,如何避免覆盖js/css导入?

Gulp/Symfony2 2:当缓存崩溃时,如何避免覆盖js/css导入?
EN

Stack Overflow用户
提问于 2015-08-17 17:03:54
回答 1查看 740关注 0票数 3

我已经为我的Symfony2应用程序准备了一个完整的构建过程,并且正在尝试集成缓存崩溃,但是遇到了一个障碍。我使用gulp-rev将散列附加到连接的javascript文件中,并输出一个清单文件,以映射原始文件名和散列文件名。我目前有一个小枝模板,它有一个脚本标记来导入所有正确构建的javascript文件,但是我需要找到一种方法来更新脚本标记,用正确的哈希来指向文件的版本,确保每次哈希更改时都会下载文件的新版本。

我想出了一些我在下面描述过的解决方案,但是没有一个感觉是对的。是否有人有一个更好的/正确的解决方案,或一些理由,为什么我应该采取我已经想到的方式之一。

  • 使用gulp-revreplacemy_template.html.twig中对app.js的引用替换为对清单文件中映射定义的app-8de7016eef.js的引用。Problem:如果在我的dev环境中运行命令,这将覆盖实际的模板文件,给我留下一个肮脏的git树和不应该提交的更改。
  • gulp输出一个资产模板文件,该文件存储在public/html中,没有提交到版本控制,并根据是否在prod/dev环境上运行(即<script src='js/app.js'>在dev上,<script src='js/app-8de7016eef.js'>在prod上)包含正确的脚本标记。这样,我的主模板就可以@include 'public/html/assets.html.twig'了,永远不需要被覆盖。Problem:当存在多个相互扩展的模板时,以及在需要被其他模板覆盖的单独块中同时存在CSS和JS时,这会变得越来越复杂。从我的吞咽任务中生成和输出一个小树枝文件也很麻烦。
  • 使用assetic来管理缓存破坏:我可以使用assetic的gulp-rev语法,而不是使用{% javascripts 'public/js/app.js' %} <script src="{{ asset_url }}"></script> {% endjavascripts %},让它为我处理缓存破坏。Problem:使用gulp的全部目的是摆脱assetic,如果我必须同时使用gulp和assetic,那么复杂性就会增加。

那么有人用吞咽和塞弗尼的方法解决了破坏缓存的问题吗?你是怎么做到的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-18 14:26:35

您应该使用两个配置指令:

代码语言:javascript
复制
framework.templating.assets_version
framework.templating.assets_version_format

您可以在“文档 of the FrameworkBundle”中读到更多关于它们的内容。

它们使用常规的{{ asset() }}函数,不需要AsseticBundle。

然后,只需转储一个参数/config-文件,该文件在git预提交钩子中将压缩的前端源文件文件夹的md5sum分配给assets_version

.git/hooks/pre-commit

代码语言:javascript
复制
#!/usr/bin/env sh

echo "framework.templating.assets_version: $(tar -cf - ./src/Frontend | md5sum)" \
> app/config/assets_version.yml

app/config/config.yml

代码语言:javascript
复制
# ...
imports:
  # ...
  - { resource: './assets_version.yml' }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32055965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档