我有一個爲我的Symfony2應用程序的gulp構建過程,並試圖集成緩存清除,但遇到了障礙。我使用gulp-rev
將散列追加到我的連接的JavaScript文件並輸出清單文件以映射原始文件和散列文件名。我目前有一個樹枝模板,它有一個腳本標籤來導入我所有正確構建的JavaScript文件,但我需要找到一種方法來更新該腳本標籤,以指向具有正確散列的文件版本,確保新鮮每次散列更改時都會下載該文件的版本。Gulp/Symfony2:如何避免緩存清除時覆蓋我的js/css導入?
我已經想了許多,我向您說明的解決方案的,但沒有人覺得不對勁。有沒有人有一個更好的/正確的解決方案,或者爲什麼我應該採取我已經想到的方式之一的一些推理。
- 使用
gulp-revreplace
在my_template.html.twig
更換參考app.js
是通過在清單文件的映射所定義的app-8de7016eef.js
的參考。 問題:這將覆蓋我的實際模板文件,如果命令在我的開發環境中運行,給我留下一個髒git樹和不應該提交的更改。 - 曾經吞掉存儲在
public/html
未承諾版本控制輸出的資產模板文件,包括基於它是否PROD上運行/開發環境正確的腳本標籤(即在開發<script src='js/app.js'>
,並且<script src='js/app-8de7016eef.js'>
上PROD 。我的主要模板可以在@include 'public/html/assets.html.twig'
之後,並且永遠不需要被覆蓋。問題:當存在多個互相擴展的模板時,以及在需要由其他塊覆蓋的單獨塊中同時存在CSS和JS時,這會變得越來越複雜它也感覺混亂,從我的吞嚥任務生成和輸出一個樹枝文件 - 使用資產管理緩存破壞:而不是使用
gulp-rev
我可以使用{% javascripts 'public/js/app.js' %} <script src="{{ asset_url }}"></script> {% endjavascripts %}
資產的語法,並讓我處理緩存破壞我。 問題:使用一飲而盡的整點是從assetic移開,如果我必須使用兩個杯和assetic那麼複雜性增加。
那麼有沒有人解決了與吞噬和symfony問題緩存破壞?你是怎麼做到的?
謝謝,這個作品很棒。我們部分的部署過程將生成assets_version.yml文件,而不是預先提交的鉤子。然後,我簡單地使用' - {resource:'/path/to/assets_version.yml',ignore_errors:true}',以便配置文件在assets_version.yml文件不存在時起作用。 – lukeo05