我在Rails 3.1應用程序上使用CloudFlare CDN。 Cloudflare是一款適用於DNS級別的CDN。在第一次打到靜態資產時,CloudFlare會從您的應用程序加載它,然後將其緩存到CDN中。未來請求從CDN加載該資產而不是您的應用。如何防止Rails 3.1將靜態資產緩存到Rails.cache?
我遇到的問題是,如果你設置控制器緩存爲true:
config.action_controller.perform_caching = true
它使機架::緩存中間件。由於Rails爲靜態資產設置了默認的緩存控制設置,這些資產被寫入到Rails.cache存儲中。因此,我的緩存存儲(在我的情況下是redis)正在用URL作爲散列鍵的靜態資產填充。
不幸的是,我無法關閉靜態資產緩存控制標頭,而不會影響Cloudflare和我的用戶的瀏覽器如何緩存資源。我無法關閉控制器緩存,或者我失去了頁面/動作/片段緩存。如果我刪除Rack :: Cache中間件,結果也是一樣。
有沒有人有任何其他想法?
更新:我已在GitHub here上打開了一張票。
當你說靜態資產時,你只是指Sprockets生成的文件? –
是的,我喜歡。將哈希追加到文件名中。 –