在RAILS 3.1中设置js资产的Cache Control头

Setting Cache-Control headers on js assets in RAILS 3.1

本文关键字:Cache Control js RAILS 设置      更新时间:2023-09-26

我将生产服务器上的头作为进行检查

    curl --head -H "Accept-Encoding: gzip" http://foo.heroku.com/assets/mobile.js

我得到了以下标题,这些标题表明RAILS没有设置cachecontrol标题。

HTTP/1.1 200 OK
Server: nginx/0.7.67
Date: Wed, 22 Jun 2011 12:01:55 GMT
Content-Type: application/javascript
Connection: keep-alive
Content-Md5: efb90436a465f8a73efb467109f745f3
Cache-Control: no-cache
Last-Modified: Wed, 22 Jun 2011 11:46:04 GMT
Etag: "efb90436a465f8a73efb467109f745f3"
X-Ua-Compatible: IE=Edge,chrome=1
X-Runtime: 0.001258
X-Content-Digest: 6493f457e9550773761bb1c2c52ec4cb44a19c19
X-Rack-Cache: stale, valid, store
X-Varnish: 164373614
Age: 0
Via: 1.1 varnish
Content-Encoding: gzip

我想让heroku的清漆缓存缓存资产,只在git推送上刷新。有什么想法吗?

Brad

您必须将其添加到您的环境/生产中。rb:

config.serve_static_assets = true
config.static_cache_control = "public, max-age=172800"

Camille的答案适用于5.1 之前的Rails版本

但是,Rails 5.1中的config.static_cache_control将被弃用。用新的可用选项更新的代码应该是:

config.serve_static_assets = true
config.public_file_server.headers = { 'Cache-Control' => 'public, max-age= 172800' }