首页 > 解决方案 > 在 Rails 5 预编译资产上缓存来自 Chrome 审计的警告

问题描述

我已经对我的暂存 Rails 5 应用程序(Heroku 上的生产)运行了 Lighthouse 审计,并且在“诊断”部分中出现了一些关于我的静态资产的警告。

我的启动页面上的所有静态资产都标记为“对静态资产使用效率低下的缓存策略”,尽管它们显示正确并且指纹正确。

他们的缓存 TTL(生存时间)目前设置为“”。(我什至不确定这是实际问题..)

是否可以轻松解决此问题?或者这可能是 Heroku 或我的暂存应用程序上的设置要更改?或者也许这是一种正常的行为......

标签: ruby-on-railsruby-on-rails-5asset-pipelinelighthouse

解决方案


你的缓存是如何配置的?(即config.cache_store?)确保您已经设置了像 memcached 或 Redis 这样的缓存存储。在 Heroku 之外,人们会使用 Nginx 或 Apache 之类的 Web 服务器来提供静态内容。不幸的是,在这里,应用程序服务器也需要完成这项工作。

要在当前 Rails 版本中设置适当的 HTTP 标头,应该使用config.public_file_server.headers.

config.public_file_server.headers = {
  'Cache-Control' => 'public, max-age=15552000',
  'Expires' => 1.year.from_now.to_formatted_s(:rfc822)
}

在旧版本的 Rails 中,使用config.static_cache_control

config.static_cache_control = 'public, max-age=15552000

推荐阅读