Play 2 用の LESS css と Google Closure コンパイラのサポートが気に入っています。変更を行うたびにファイルの名前を変更することを心配する必要がないように、自動バージョン管理のサポートを追加する方法はありますか。コミュニティの他の人々はこれをどのように処理しますか?
質問する
842 次
1 に答える
1
これは、あなたが話しているキャッシュの問題だと思います。あなたが話しているのがバージョン管理の問題である場合、これはgit や mercurial のようなバージョン管理システムの働きです。
すべての静的リソースでこのキャッシングの問題が発生します。
問題
クライアント側で Web ページをすばやく表示するには (そして、サーバー側で静的コンテンツに対する要求がそれほど多くないようにするため)、HTTP 応答に Cache-Control および Etag ディレクティブを追加します。ブラウザは、キャッシュからこれらの静的リソースを取得します。
しかし、logo.png を変更した場合 (たとえば、会社のロゴを変更した場合)、この画像はブラウザーのキャッシュに保存されるため、ユーザーには新しいロゴが表示されません。
ソリューション
そのための2つの解決策があります。
- Etag および Cache-control ディレクティブを試して、ユーザーが X 日ごとに新しい静的リソースを要求できるようにします。私はフロントエンドサーバー(Nginxなど)でそれを行いますが、そのためにプレイサポートを使用することもできます(詳細はこちら)
- リソース バージョンを含む偽のクエリ パラメーターを作成します。たとえば、 を持つことができます
http://www.mydomain.com/public/images/logo.png?v=1.2
。パラメータを変更するv
と、ブラウザはキャッシュから取得しません。サーバー側では、クエリ パラメータは何も変更せず、提供されたリソースは再びキャッシュされます。
すべての静的リソースに追加された application.conf の構成パラメーターを使用して、2 番目のソリューションを使用します。これは、単一のリソースを更新すると、すべてのリソースが再度読み込まれることを前提としています (通常、画像を変更すると、css も変更され、js ファイルも変更されます...)
于 2012-06-15T12:25:10.353 に答える