资产自动缓存破坏没有查询?

Cho*_*per 4 php symfony assetic

我找不到太多关于此的信息.

我想将所有css(和js确实)文件编译成这样的东西:

css/all-c498dsfbc.css
Run Code Online (Sandbox Code Playgroud)

现在我只能得到这些:

css/all.css
css/c498dsfbc.css
css/all.css?v=123
Run Code Online (Sandbox Code Playgroud)

第一个很糟糕,因为它根本没有缓存破坏.

第二个生成一个可用于缓存清除的哈希,但由于某种原因,当我在.css文件中更改某些内容然后再次运行时它不会更改:

$ php app/console assetic:dump --env=prod --no-debug
Run Code Online (Sandbox Code Playgroud)

第三个也很糟糕,因为我需要手动更改版本,如下所述:http://symfony.com/doc/current/reference/configuration/framework.html#ref-framework-assets-version.另外,我认为使用查询不是一个好主意(我认为某些浏览器或CDN可能不喜欢这样).如果文件名被更改会更好:'all-c498dsfbc.css'.如果我没记错的话,这就是在Rails中完成的.

有什么想法吗?

编辑

似乎缺少这个功能,我不敢相信:https://github.com/kriswallsmith/assetic/pull/190

Vit*_*ian 6

在我们的项目中,为了确保Varnish不为每个部署缓存新内容,我们手动更改版本 - 而资产选择那个.我认为,这是一种常见的做法.但在我们的例子中 - 它将它保存在文件夹中web/version-1.2.3/css/all.css.

我们的framework部分配置:

    templating:
        engines: ['twig']
        assets_version: %release_version%
        assets_version_format: "version-%%2$s/%%1$s"
Run Code Online (Sandbox Code Playgroud)