【问题标题】:How to enable browser caching of assets (images/JS/CSS) in Symfony2?如何在 Symfony2 中启用浏览器缓存资产(图像/JS/CSS)?
【发布时间】:2014-08-02 09:33:04
【问题描述】:

我正在开发一个使用大量图像、JS 和 CSS 文件的 Symfony2 应用程序。

我希望浏览器主动缓存这些资源,以便大多数页面加载不会重新请求这些资源。

默认设置似乎是让浏览器不断重新检查它们,并让服务器以 304 Not Modified 响应。如何更改它以使其甚至不运行此请求? (我不介意它是否使用 ETag 或 Expires 或任何机制,只要大多数页面请求不对所有图像运行单独的请求即可。)

我已经在 Google 上搜索了很多,并找到了很多关于如何执行此操作的信息对于页面,您的控制器中有一个 $request 对象,您可以在该对象上设置各种属性。但是,我想问对于我的任何 PHP 代码返回的资产(例如图像)如何执行此操作。

【问题讨论】:

  • 资产的缓存由您的 Web 服务器(Apache、IIS、...)完成。你的网络服务器是什么?
  • @griotteau:网络服务器是 Apache。

标签: symfony caching assets


【解决方案1】:

不是针对你的网络服务器,而是针对使用 nginx+symfony 的人,解决方案是:

  1. 编辑 config.yml 以使资产版本控制它描述 here
#app/config/config.yml 框架: # ... 资产: 版本:'v2'

其中 'v2' - 是您的自定义资产版本名称。

  1. 按照here 的描述编辑您的 nginx 配置
服务器 { ... 位置 ~* ^.+\.(rss|atom|jpg|jpeg|gif|png|ico|rtf|js|css)$ { 最大过期; } ... }

现在您所有的资产都将拥有最长的有效期。

如果您发布新版本并更改一些 .css 和 .js 文件,只需编辑版本名称,例如。从“v2”到“v3”。

【讨论】:

    【解决方案2】:

    您必须将其添加到您的 httpd.conf 文件中:

    ExpiresActive On
    ExpiresByType image/gif "access 1 month"
    ExpiresByType image/jpg "access 1 month"
    ExpiresByType image/jpeg "access 1 month"
    ExpiresByType image/png "access 1 month"
    ExpiresByType text/css "access 1 month"
    ExpiresByType text/js "access 1 week"
    ExpiresByType application/javascript "access 1 week"
    

    必须激活模块“mod_expires”

    另外,不要忘记在配置文件中添加asset_version(请参阅http://symfony.com/doc/current/reference/configuration/framework.html#ref-framework-assets-version),以便在更改某些资产时使缓存无效

    【讨论】:

    • httpd.conf 文件在哪里?这是在 apache 还是 symfony 目录中?
    • 顺便说一句,我把它放在我的 .htaccess 文件中并且工作正常,symfony 的主要区别似乎是,ExpiresByType text/js "access 1 week" ExpiresByType application/javascript "access 1 week ",而不是其他提及 javascript 的方式,例如 ExpiresByType text/x-javascript "access plus 1 month" ExpiresByType text/javascript "access plus 1 month"
    • @JosephAstrahan httpd.conf 位于/etc/apache2。在 ubuntu 中使用 apache2.conf 文件
    猜你喜欢
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 2012-10-13
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    相关资源
    最近更新 更多