【发布时间】:2011-10-21 05:32:57
【问题描述】:
我在我的 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 上开了一张票。
【问题讨论】:
-
当您说静态资产时,您是指 Sprockets 生成的文件吗?
-
是的,我愿意。将哈希附加到文件名。
标签: ruby-on-rails caching ruby-on-rails-3.1 asset-pipeline cloudflare