Rails 3.1 アプリケーションで CloudFlare CDN を使用しています。Cloudflare は、DNS レベルで機能する CDN です。静的アセットへの最初のヒットで、CloudFlare はそれをアプリからロードし、CDN にキャッシュします。そのアセットに対する今後のリクエストは、アプリではなく CDN から読み込まれます。
私が抱えている問題は、コントローラーのキャッシュをtrueに設定した場合です:
config.action_controller.perform_caching = true
Rack::Cache ミドルウェアを有効にします。Rails は静的アセットのデフォルトのキャッシュ制御設定を設定するため、それらのアセットは Rails.cache ストアに書き込まれます。その結果、私のキャッシュ ストア (私の場合は redis) は、ハッシュ キーとしての URL を持つ静的アセットでいっぱいになります。
残念ながら、Cloudflare とユーザーのブラウザーがアセットをキャッシュする方法に影響を与えずに、静的アセット キャッシュ コントロール ヘッダーをオフにすることはできません。コントローラーのキャッシュをオフにできません。または、ページ/アクション/フラグメントのキャッシュが失われます。Rack::Cache ミドルウェアを削除しても同じ結果になります。
他のアイデアはありますか?
更新: GitHub here でチケットをオープンしました。