sem*_*ent 8 java browser-cache playframework expires-header playframework-2.0
我正在使用Play和Java运行应用程序,我需要为各种类型的资产设置到期日期:images,css,javascript等.
我在conf/routes文件中有以下内容:
GET /assets/*file controllers.Assets.at(path="/public", file)
Run Code Online (Sandbox Code Playgroud)
我能够在一个单独的文件中设置到期日期application.conf
:
"assets.cache./public/js/pages/validation.js"="max-age=7200"
Run Code Online (Sandbox Code Playgroud)
但我无法将其设置为整个文件夹.我试过了
"assets.cache./public/js/pages/*.js"="max-age=7200"
"assets.cache./public/js/pages/*"="max-age=7200"
Run Code Online (Sandbox Code Playgroud)
但没有任何反应.我希望为/ js/pages文件夹中的所有内容设置到期日期.
我也试过了
assets.defaultCache="max-age=7200"
Run Code Online (Sandbox Code Playgroud)
根据http://www.jamesward.com/2014/04/29/optimizing-static-asset-loading-with-play-framework上的说明
以及
http.cacheControl=7200
Run Code Online (Sandbox Code Playgroud)
根据文档http://www.playframework.com/documentation/1.2.3/configuration#http
这些都不起作用.上面的更改是在application.conf中完成的.
我知道有一种方法可以通过定义控制器来改变我想要设置过期日期的路由的响应(): 静态内容的远期Expires标头
但我想知道如何从application.conf文件配置资产的到期日期.
我们的应用程序在S3 Linux实例上运行,因此无法在服务器上配置过期日期.
谢谢!
Play 框架不支持"assets.cache./public/js/pages/*.js"="max-age=7200"
,但assets.defaultCache="max-age=7200"
应该可以工作。
在调试/开发模式下(使用 play run 启动应用程序)assets.defaultCache
会被忽略,因此它始终是“无缓存”。确保您在生产模式下运行它(使用播放开始)。
我在文档中找不到任何参考,但可以在https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/scala/play/api/controllers/Assets.scala
AssetInfo::cacheControl
函数中检查相同的内容