【问题标题】:[play framework]Leverage browser caching[播放框架]利用浏览器缓存
【发布时间】:2016-07-16 13:21:47
【问题描述】:

我运行了一个测试运行以对我的页面进行速度测试。它说“在静态资源的 HTTP 标头中设置过期日期或最长期限会指示浏览器从本地磁盘而不是通过网络加载以前下载的资源。”。

我的页面使用 Play 框架。遇到很多关于 .htaccess 文件的答案,但 Play Framework 不支持它。如何在浏览器级别缓存静态文件?

【问题讨论】:

  • 您是否在生产模式下运行 Play?如果是这样,浏览器应该已经缓存了资产......
  • 是的。我在生产模式下运行它。仍然谷歌页面洞察力说声明。 @Salem

标签: caching playframework browser-cache


【解决方案1】:

在生产模式下使用 Play 时,它已经设置了 ETag 标头,因此每当浏览器请求与该 eTag 匹配的文件时,play 只会返回 304 Not Modified。这将节省您的数据(如果版本正确,浏览器将不会再次下载文件),但仍需要向服务器发出请求。

如果您想指定到期日期,您可以使用assets.defaultCache="max-age=3600" 到您的application.conf(根据您的需要调整值:3600 是一小时,以秒为单位)。

我现在无法检查这个,但我认为 Play 也设置了 Cache-Control: max-age=3600,所以你收到的警告可能是因为这个值对于你用来检查缓存的工具来说太低了。

您还可以为单个资产设置到期时间(请参阅https://www.playframework.com/documentation/2.5.x/AssetsOverview#Additional-Cache-Control-directive

请注意,您应该只为您确定不会发生太大变化的资产指定较长的到期时间...

【讨论】:

  • 感谢@Salem 的帮助
  • 太好了,谢谢!设置assets.defaultCache 有效,但仅在生产模式下有效,因此在开发模式下不要测试标头(sbt run)。
猜你喜欢
  • 2011-10-15
  • 2014-07-18
  • 1970-01-01
  • 2016-03-13
  • 2017-09-05
  • 2013-09-26
相关资源
最近更新 更多