使用Play框架和Java进行缓存

8

我是在使用Play和Java开发的应用程序中,需要为各种类型的资源(如图片、CSS、JavaScript等)设置到期日期。

我在conf/routes文件中有以下内容:

GET     /assets/*file               controllers.Assets.at(path="/public", file)

我能够在application.conf中为单个文件设置过期日期:

"assets.cache./public/js/pages/validation.js"="max-age=7200"

但我无法将其设置为整个文件夹。我尝试过。
"assets.cache./public/js/pages/*.js"="max-age=7200"
"assets.cache./public/js/pages/*"="max-age=7200"

但是没有任何反应。我希望能够为/js/pages文件夹中的所有内容设置过期日期。

我还尝试过

assets.defaultCache="max-age=7200"

根据http://www.jamesward.com/2014/04/29/optimizing-static-asset-loading-with-play-framework的指示,优化静态资源加载。此外,
http.cacheControl=7200

根据文档http://www.playframework.com/documentation/1.2.3/configuration#http,我尝试了很多方法,但都没有成功。以上更改已在application.conf中完成。
我知道可以通过定义控制器来更改响应(),以便为想要设置到期日期的路由进行更改:far future Expires header for static contents。但我想知道如何从application.conf文件配置资产的到期日期。
我们的应用程序正在运行在S3 Linux实例上,因此在服务器上配置到期日期不是一个选择。
谢谢!
1个回答

4

Play框架不支持"assets.cache./public/js/pages/*.js"="max-age=7200",但是assets.defaultCache="max-age=7200"应该可以使用。

在调试/开发模式下(使用play run启动应用程序),assets.defaultCache会被忽略,因此它始终为“no-cache”。请确保您在生产模式下运行它(使用play start)。

我在文档中找不到任何参考资料,但是可以在https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/scala/play/api/controllers/Assets.scalaAssetInfo::cacheControl函数中进行检查。


1
请问您能在回答中引用Play2的具体文档吗? - SysHex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接