ruby-on-rails - 在 Rails 5 预编译资产上缓存来自 Chrome 审计的警告
问题描述
我已经对我的暂存 Rails 5 应用程序(Heroku 上的生产)运行了 Lighthouse 审计,并且在“诊断”部分中出现了一些关于我的静态资产的警告。
我的启动页面上的所有静态资产都标记为“对静态资产使用效率低下的缓存策略”,尽管它们显示正确并且指纹正确。
他们的缓存 TTL(生存时间)目前设置为“无”。(我什至不确定这是实际问题..)
是否可以轻松解决此问题?或者这可能是 Heroku 或我的暂存应用程序上的设置要更改?或者也许这是一种正常的行为......
解决方案
你的缓存是如何配置的?(即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
推荐阅读
- angular - 子组件从@Input 或服务订阅获取数据?哪个更好?
- ansible - 如何确保路径变量在 Ansible 中以斜杠结尾?
- python - 如何在 Python 中编写带有函数的 switch case 语句?
- reactjs - 使用 React-Testing-Library 和 Jest 测试 useRef onError Fn
- samesite - Polyfill SameSite cookie 属性
- css - 如何设置图像高度匹配父级和宽度与高度相同?
- python - 是否可以通过单击为按钮着色,同时拥有多个其他按钮
- java - CountDownTimer 奇怪的完成行为
- json - SyntaxError:解析时位置 0 处 JSON 中的意外标记 v (
) 在 tryCallOne - autodesk-forge - 403 - Forbidden - 令牌没有此请求的特权。尝试列出项目时