8

私は Play と Java でアプリケーションを実行しています。画像、CSS、JavaScript など、さまざまな種類のアセットの有効期限を設定する必要があります。

conf/routes ファイルに次のものがあります。

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

で 1 つの個別のファイルの有効期限を設定できました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 で行われました。

有効期限を設定したいルートの response() を変更するコントローラーを定義することで、同じことを行う方法があることを知っています。 遠い将来 静的コンテンツの Expires ヘッダー

しかし、application.conf ファイルからアセットの有効期限を設定する方法を知りたいです。

私たちのアプリケーションはS3 Linux インスタンスで実行されているため、サーバーで有効期限を設定することはできません。

ありがとうございました!

4

1 に答える 1

4

Play フレームワークはサポートしていません"assets.cache./public/js/pages/*.js"="max-age=7200" が、動作するassets.defaultCache="max-age=7200"はずです。

デバッグ/開発モード (play run を使用したアプリの起動)assets.defaultCacheは無視されるため、常に「キャッシュなし」になります。prod モードで実行していることを確認してください (play start を使用)。

ドキュメントで参照が見つかりませんが、https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/scala/play/api/controllers/Assets.scala AssetInfo::cacheControl関数で同じことを確認できます

于 2014-12-19T08:36:20.560 に答える