我有一个在开发环境中缓存页面的RoR应用程序(ruby v1.8.7; rails v2.3.5)。这不是一个问题,但缓存页面的a
元素不正确。
我没有对development.rb文件进行任何更改,我也没有故意向控制器添加任何缓存命令。
我已经尝试清除此网站(localhost)上的浏览器(OSX上的Firefox 3.5)cookie和页面缓存。我也重启了Mongrel。似乎没有任何帮助。
我错过了什么?
答案 0 :(得分:114)
development.rb中的这一行确保不会发生缓存。
config.action_controller.perform_caching = false
您可以使用
清除Rails缓存Rails.cache.clear
那就是说 - 我不相信这是一个缓存问题。您是否对页面进行了更改而没有反映出来?您是不是正在查看该页面的实时版本?我做过一次(脸红)。
更新:
您可以在控制台中调用该命令。 您确定要在开发中运行该应用程序吗?
唯一的选择是您尝试呈现的页面不是正在呈现的页面。
如果你观察服务器输出,你应该能够在页面渲染时看到渲染命令:
Rendered shared_partials/_latest_featured_video (31.9ms)
Rendered shared_partials/_s_invite_friends (2.9ms)
Rendered layouts/_sidebar (2002.1ms)
Rendered layouts/_footer (2.8ms)
Rendered layouts/_busy_indicator (0.6ms)
答案 1 :(得分:102)
rake tmp:cache:clear
可能就是你要找的东西。
答案 2 :(得分:24)
我可以通过清理资产缓存来解决此问题:
$ rake assets:clean
答案 3 :(得分:4)
在/ public中检查页面的静态版本,如果存在则将其删除。当Rails 3.x缓存页面时,它会在您的公用文件夹中保留静态版本,并在用户访问您的站点时加载该版本。即使在清除缓存后,这仍将保留。
答案 4 :(得分:2)
如果您正在执行fragment caching,则可以通过更新缓存密钥来手动中断缓存,如下所示:
<% cache ['cool_name_for_cache_key', 'v1'] do %>
<% cache ['cool_name_for_cache_key', 'v2'] do %>
或者您可以根据非静态对象的状态自动重置缓存,例如ActiveRecord对象,如下所示:
<% cache @user_object do %>
使用此^方法,每次更新用户对象时,缓存都将自动重置。
答案 5 :(得分:1)
更多深奥的方式:
Rails.cache.delete_matched("*")
对于Redis:
Redis.new.keys.each{ |key| Rails.cache.delete(key) }