接上文 Rails动态文件添加ETag缓存 来自动生成304 Not Modified告诉客户端来直接使用本地缓存,但是在这种情况下会出现图片闪动(重新加载渲染),影响用户体验。除了Etag这种通过和服务器进行HTTP头部比对来实现缓存的策略外,还可以采用Cache-control来通知浏览器在一段时间内不必重新请求服务器而直接本地缓存。配置如下:
user root nginx;
location ~ ^/(assets)/ {
gzip_static on;
expires 24h;
add_header Cache-Control public;
}
config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = true
config.assets.digest = true
config.assets.precompile += %w[js css].map {|ext| Dir[Rails.root.join("app/assets//.#{ext}")] }.flatten.map {|f| f.split('/')[-1] }
("app/assets//.#{ext}") 这个 ./#{ext} 是什么意思? 存在图片的文件夹