php - 如何在内容更改时使用 Symfony2 在生产中强制使用 css 缓存

标签 php css symfony caching

在生产中,当缩小 css (php app/console assetic:dump) 时,文件会重新创建,但名称不会改变。

因此用户浏览器会在缓存中保留旧版本。一种解决方法是在 css 名称后添加一个参数,如 ?v=12 以强制该缓存,但还有其他解决方案吗? Symfony 如何生成 css 文件名?用 md5 命名该文件可以解决问题,因为当文件更改时,它的名称也会更改。

{% stylesheets filter='cssrewrite,?yui_css'
        'bundles/app/css/style.css'
    %}
        <link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}" />
    {% endstylesheets %}

在我的源代码中,文件名在 css 更改后仍然是相同的事件:

<link rel="stylesheet" type="text/css" media="screen" href="/css/b3ba425.css" />

最佳答案

不幸的是,似乎没有比添加版本号更好的强制用户缓存刷新的方法了。然而,这可能会以一种很好的方式自动化:

KachkaevAssetsVersionBundle它提供了 assets_version:increment 任务,所以有了这个包,您需要做的就是:

加入你的config.yml

framework:
    templating:
        assets_version: %assets_version%

然后在您的parameters.yml.dist/parameters.yml中:

parameters:
    assets_version: v1

assets_version:increment 任务将为您增加 v1 值。

我还建议将此命令添加到您的composerpost installpost update 脚本

关于php - 如何在内容更改时使用 Symfony2 在生产中强制使用 css 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32396525/

相关文章:

php - 如何保存 Swiftmailer 发送的所有电子邮件

php - Fancybox 实例向自身发送 POST

php - 用 <b> 和 <b> 替换 [ 和 ]

css - IE 11 中父子之间的幽灵边距/填充

html - Ionic 3 中的断线

php - 如何保护 fosuserbundle 中 Symfony 项目的 URL?

php - Symfony 基本 HTTP 身份验证不起作用

javascript - 使用 javascript 从 txt 文件中读取数据,每 5 分钟一次

php - Mysql 在 php 中失败,但在 phpmyadmin 中工作

javascript - 使用 jquery 将 html 图像添加到 div/table