我无法在nginx / RoR 4.0.0中更改缓存控制

时间:2018-02-15 19:53:57

标签: ruby-on-rails nginx

我有这个脚本:

location ~* ^.+\.(css|js)$ {
        expires -1;
        access_log off;
        add_header Pragma public;
        add_header Cache-Control "public, max-age=0";
        add_header X-Asset "yes";
}

但是当我查看Chrome中的开发者工具时,我看到了这一点:

Cache-Control:max-age=2592000
Content-Encoding:gzip
Content-Type:application/javascript
Date:Mon, 12 Feb 2018 16:45:22 GMT
ETag:W/"5a81c436-e5d7f"
Expires:Wed, 14 Mar 2018 16:45:22 GMT
Last-Modified:Mon, 12 Feb 2018 16:43:34 GMT
Server:nginx
Vary:Accept-Encoding

如何设置CSS和JS必须始终在页面加载时进行简单操作。我现在有3年的网站,我真的不会改变它。

用Ruby on Rails编写,从大约一周开始,人们开始编写他们无法打开某个页面,因为<% link_to "visits", visits_path %>将它们重定向到root_path ......

我无法重现此错误,因为在我的每个浏览器上一切正常,但是一旦我遇到这种情况,当我打开开发人员工具并重新加载页面以检查某些错误时,页面只是正确加载。所以我想总是在每个页面加载时加载JS。

编辑:

尝试像第一个回答一样改变我仍然看到:

Cache-Control:max-age=31536000, public, max-age=0
Content-Encoding:gzip
Content-Type:application/javascript
Date:Thu, 15 Feb 2018 19:36:38 GMT
ETag:W/"5a85c673-8fb59"
Expires:Fri, 15 Feb 2019 19:36:38 GMT
Last-Modified:Thu, 15 Feb 2018 17:42:11 GMT
Pragma:public
Server:nginx
Vary:Accept-Encoding
X-Asset:yes

仅在隐身模式下才可以正常使用。

1 个答案:

答案 0 :(得分:0)

  

如何设置CSS和JS必须始终在页面加载上进行实时加载

尝试将这组标题设为this SO answer suggests

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

所以你的nginx配置可能如下所示:

location ~* ^.+\.(css | js)$ {
  expires 0;
  access_log off;
  add_header Pragma "no-cache";
  add_header Cache - Control "no-cache, no-store, must-revalidate";
  add_header X - Asset "yes";
}