1

ファイルストアに非常に大きなキャッシュを持つRails3.2.3アプリがあります。キャッシュ全体をクリアするのに30分かかります。アセットパイプラインを使用するようにアプリを移行しようとしています。

実行するとrake assets:precompile実際にキャッシュがクリアされることがわかりました(3.2.3についてはassets.rakeを参照してください。すべてをクリアするのに時間がかかることを考えると、デプロイする必要があるたびにキャッシュをクリアすることは良い考えではないと思います。

  • アセットパイプラインにはキャッシュが含まれますか?
  • すべてがpublic/Assetsフォルダーにコンパイルされるので、なぜそれをクリアするのですか?フラグメントのみをキャッシュしている場合はどうなりますか?
  • ファイルストアのキャッシュにアクセスせずに(そして展開するたびにキャッシュをクリアせずに)パイプラインを使用する方法はありますか?

前もって感謝します!

4

1 に答える 1

0

しばらく考えてみたところ、画像が更新されるたびにキャッシュをクリアするのは非常に安全である(そして時には避けられない)ことに気づきました。

の場合config.assets.digest = true、画像が更新されると、新しい画像を使用するために、キャッシュされたページ/フラグメント内の画像へのリンクを更新して無効にする必要があります。アセットがクリーンアップされた場合、キャッシュのクリーンアップに失敗すると、リンク切れになるか、ブラウザがキャッシュを失うまで発生します。

JavaScriptとスタイルシートの場合、キャッシュをクリアする理由はapplication.jsapplication.cssファイルへのリンクを更新するためです。ただし、ソースをJSファイルとCSSファイルにキャッシュしないように注意すると、キャッシュのクリアは冗長になります。

これを行わないと、古いJSファイルとCSSファイルが使用されます。

于 2012-12-21T08:22:51.477 に答える