在我的application_controller.rb中有以下代码
before_action :set_cache_headers
def set_cache_headers
response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
response.headers["Pragma"] = "no-cache"
response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
end
这也会导致我的资产也根据每个请求重新加载。在Rails中,如何在每个请求而不是资产上重新加载HTML?
我想要这样的东西(Rails中除外):
<filesMatch ".(css|jpg|jpeg|png|gif|js|ico|JPG|woff)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
答案 0 :(得分:2)
由于默认情况下在Rails for Prod env中将action_controller缓存设置为ON,因此也会设置Control-Cache。但是,ApplicationController中的过滤器将覆盖它,从而整个禁用缓存。 尝试将此行粘贴在config / initializers / assets.rb文件中:
Rails.application.config.public_file_server.headers = {
'Cache-Control' => "public, max-age=#{some_number}"
}