2016-07-16 72 views
0

我跑了一个测试运行我的页面的速度测试。它说:“在静态资源的HTTP标题中设置失效日期或最大年龄指示浏览器从本地磁盘加载之前下载的资源,而不是通过网络。”[play framework]利用浏览器缓存

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

+0

您正在运行在生产模式下播放?如果是这样,浏览器应该已经缓存资产... – Salem

+0

是的。我正在生产模式下运行它。谷歌的网页洞察仍然说明了这一说法@Salem –

回答

1

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

如果你想指定一个expiracy的日期,你可以使用assets.defaultCache="max-age=3600"到你的application.conf(根据你的需要调整值:3600是一秒钟)。

我现在无法检查,但我认为Play也会设置Cache-Control: max-age=3600,因此可能出现的警告是因为您用于检查缓存的工具的值太低。

您还可以设置expiracy时间单项资产(见https://www.playframework.com/documentation/2.5.x/AssetsOverview#Additional-Cache-Control-directive

请注意,您应该只指定一个高expiracy时间的资产,你确信不会发生很大的变化......

+0

感谢您的帮助@Salem –

+0

太好了,谢谢!设置'assets.defaultCache'可以工作,但只能在生产模式下使用,所以不要在开发模式('sbt run')下测试头文件。 – Nick