我通过uglify使用方法从这里缩小我的js文件后出现缓存清除问题: http://symfony.com/doc/current/cookbook/assetic/uglifyjs.html
缩小后,我的文件加载为1f4daf9.js
,没有在配置中设置的资产版本
我的uglify过滤器配置如下:
filters:
uglifyjs2:
bin: /usr/local/bin/uglifyjs
我想要获得的是使用资产版本获取1f4daf9.js?r1234
名称,以便浏览器强制重新加载它。那我怎么能这样做呢?
答案 0 :(得分:2)
在https://stackoverflow.com/a/27900224/3922926上找到答案 您实际上需要使用{{asset(asset_url)}}而不是{{asset_url}},因为它不会自动向asset_url添加版本。
答案 1 :(得分:0)
如果在磁盘上将输出文件名设置为固定文件名,则可以在请求URL(实际上名称不相同)上安排缓存清除。它仍然会从磁盘发送原始文件。 h5bp cache-busting config有一个例子:
# If you're not using a build process to manage your filename version
# revving, you might want to consider enabling the following directives
# to route all requests such as `/style.12345.css` to `/style.css`.
#
# To understand why this is important and even a better solution than
# using something like `*.css?v231`, please see:
# http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.(\d+)\.(bmp|css|cur|gif|ico|jpe?g|js|png|svgz?|webp|webmanifest)$ $1.$3 [L]
</IfModule>
不幸的是,assets_version_format
无法在文件名中嵌入字符串,这会使文件命名成为一个有点手动的过程。
这对于Javascript和CSS一样适用。然后,JS和CSS文件也可以设置为具有长到期时间,这意味着它们将被查看浏览器缓存,而不会被重新请求 - 直到URL(具有嵌入版本或哈希)发生更改,并获取最新版本。