我在 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 上开了一张票。