ruby - 通过在 Ruby on Rails 5 中配置 HTTP 头来进行静态资源缓存

标签 ruby caching heroku ruby-on-rails-5 google-pagespeed

可能你们中的大多数人都像我一样遇到过 Google 的 PageSpeed Insights。使用这个工具,我分析了我的网站,看看如何优化它。到目前为止,一切都很好。

Google 的工具表明我需要通过在静态资源的 HTTP header 中设置到期日期或最长期限来利用浏览器缓存。在我的研究过程中,我了解了很多指南:edgeguides.rubyonrails.org 解释了缓存操作、模板、操作片段等的不同方式,但没有关于资源的内容,大型二进制文件的指南导致生产崩溃和即使 Alan Bradburne 的“Rails 5 Revealed”电子书在开发中没有出现问题,也没有提供任何资源(类型错误:没有将符号哈希键隐式转换为字符串)。

即将出现的问题:如何配置 config/environments/*.rb 文件,以便静态资源在 HTTP header 和满意的 PageSpeed Insights 中具有“Expire”和/或“Max-age”?这是我在 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)}" }

Ruby on Rails 版本: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)}"
}

希望对你有帮助

关于ruby - 通过在 Ruby on Rails 5 中配置 HTTP 头来进行静态资源缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41655468/

相关文章:

asp.net-mvc - HttpResponse.RemoveOutputCacheItem 不起作用

ruby-on-rails - 如何在 Heroku 中运行 Clockwork

git - 在 Heroku 上编辑 settings.xml 文件

ruby-on-rails - *(星号)符号在函数参数附近有什么作用,以及如何在其他情况下使用它?

ruby - 如何使 --no-ri --no-rdoc 成为 gem 安装的默认设置?

android - 缓存 JSON : HTTP cache vs database

c++ - 在 C++ 中对矩阵缓存友好的 C++ 操作?

java - 使用 Jersey 测试框架的 Maven 构建错误

ruby - 在 ruby​​ 中增加二进制有效载荷

php - 用于提取 Microsoft Onenote 文档信息的库/服务