1

Web サイトの 1 ページで Rails ページ キャッシング (memcache を使用) を使用しています。キャッシュの有効期限は 24 時間です。ただし、キャッシュ値には、asset-FINGERPRINT.css という名前のアセットが含まれています。

キャッシュが存在する 24 時間の間にデプロイを実行すると、フィンガープリントは変更されますが、キャッシュ値には古いバージョンが残っています。そのため、アセットを取得しようとすると 404 が返されます。

ページの複数のバージョンがあるため、展開するたびにページを手動で期限切れにすることはできません。私の質問は、同じ問題に遭遇した人はいますか?解決策は何でしたか?

4

1 に答える 1

2

もし私があなたなら、古いバージョンのアセットを削除することはないでしょう。直面している問題に加えて、古いバージョンのHTMLを新しいCSSまたはJavascriptと一緒に使用したくない場合があります。注意しないと、問題が発生しやすくなります。

アセットの各バージョンにはフィンガープリントがあるため、現在のバージョンと以前のいくつかのバージョンを同時に使用できます。これを行う1つの方法は、パブリック/アセットをリリース間で変更されないフォルダーにシンボリックリンクすることです(capistranoを使用してデプロイする場合、デフォルトのアセットパイプライン統合を使用するとこれが発生します)。

とはいえ、キャッシュをクリアできないと感じる状況にあると、私には不安を感じます。

于 2012-05-29T17:06:45.300 に答える