通过在RubyonRails5中配置HTTP头进行静态资源缓存

通过在RubyonRails5中配置HTTP头进行静态资源缓存,ruby,caching,heroku,ruby-on-rails-5,google-pagespeed,Ruby,Caching,Heroku,Ruby On Rails 5,Google Pagespeed,也许你们中的大多数人都和我一样,见过谷歌的PageSpeed Insights。使用这个工具,我分析了我的网站,看看它可以如何优化。到目前为止,一切都很好 Google的工具指出,我需要通过在HTTP头中为静态资源设置过期日期或最大使用期限来利用浏览器缓存。在我的研究过程中,我查阅了大量的指南:edgeguides.rubyonrails.org解释了缓存动作、模板、动作片段等的不同方式,但与资源无关,big binary的指南导致了生产崩溃,尽管Alan Bradburne的《Rails 5启

也许你们中的大多数人都和我一样,见过谷歌的PageSpeed Insights。使用这个工具,我分析了我的网站,看看它可以如何优化。到目前为止,一切都很好

Google的工具指出,我需要通过在HTTP头中为静态资源设置过期日期或最大使用期限来利用浏览器缓存。在我的研究过程中,我查阅了大量的指南:edgeguides.rubyonrails.org解释了缓存动作、模板、动作片段等的不同方式,但与资源无关,big binary的指南导致了生产崩溃,尽管Alan Bradburne的《Rails 5启示录》电子书在开发中没有给出问题,没有提供任何资源(TypeError:没有将符号哈希键隐式转换为字符串)

问题:如何配置config/environments/*.rb文件,使静态资源在HTTP头和satisty PageSpeed Insights中具有“过期”和/或“最大期限”?以下是我在config/environments/production.rb中使用的最新配置:

config.cache_store = :memory_store, { 64.megabytes } 
config.public_file_server.enable = true
config.public_file_server.headers = {
    'Cache-Control' => 'public, max-age=172800',
    'Expires' => "#{1.month.from_now.to_formatted_s(:rfc822)}" }

RubyonRails版本:5.0.0.1

请查看此代码并将其粘贴到production.rb文件中

config.public_file_server.headers = {
    'Cache-Control' => 'public, s-maxage=31536000, maxage=15552000',
    'Expires' => "#{1.year.from_now.to_formatted_s(:rfc822)}"
}
希望这会有所帮助