2

すべての静的アセット (javascript、css、画像) にこのキャッシュ動作を持たせたい:

  1. それらを「永久に」キャッシュする
  2. URL は、コンテンツから生成された一意の URL である必要があります (例: MD5(コンテンツ))。
  3. アセットのコンテンツが変更されるたびに、アセットの URL が変更されるため、クライアントは新しいバージョンをフェッチする必要があります。
  4. これは、コードを変更しなくても自動的に発生するはずです。

これを行うように Play 2 を構成できますか?

4

1 に答える 1

0

AFAIK Play 2は、コントローラーを使用してファイルへの逆ルートAssetsを生成するときに、アセットのキャッシュを自動的に使用します。

本「Play for Scala」から:

リバース ルーティングと同様に、アセット コントローラーを使用するもう 1 つの利点は、HTTP エンティティ タグ (ETag) を使用した組み込みのキャッシュ サポートです。これにより、Web クライアントはリソースに対して条件付きの HTTP リクエストを作成できるため、サーバーは、変更されていないリソースを返す代わりに、キャッシュされたコピーを使用できることをクライアントに伝えることができます。

[...]

ETag ヘッダー値は、リソース ファイルの名前と変更日のハッシュです。ハッシュについて知らなくても心配する必要はありません。知っておく必要があるのは、サーバー上のファイルが更新された場合 (ロゴの新しいバージョンなど)、この値が変更されることだけです。ETag 値を取得すると、HTTP クライアントは条件付き要求を行うことができます。これは、「この ETag を含むバージョンを取得してから変更されていない場合にのみ、このリソースを提供してください」という意味です。これを行うために、クライアントは要求ヘッダーに ETag 値を含めます。

于 2013-07-23T15:04:28.770 に答える