Setting Cache-Control headers for js assets in RAILS 3.1

I check the headers on my production server as

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

and I am returning the following headers which suggest that RAILS does not set cache control headers.

 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 

I would like the heroku cache gel to be cached and updated only when git is pressed. Any ideas on how to do this?

Brad

+6
source share
2 answers

You should add this to your /production.rb environment:

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

Camille answer is suitable for Rails versions up to 5.1

However, in Rails 5.1, config.static_cache_control will be deprecated. Code updated with the new available option should be:

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

Source: https://habr.com/ru/post/891110/


All Articles