我在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生成的文件? –
是的,我喜欢。将哈希追加到文件名中。 –