Ruby on Rails:清除caching页面
我有一个在开发环境中caching页面的RoR应用程序(ruby v1.8.7; rails v2.3.5)。 这不是一个问题,但caching页面的元素是不正确的。
我还没有对development.rb文件进行任何更改,我也没有明确地向控制器添加任何caching命令。
我已经尝试清除浏览器(OSX上的Firefox 3.5)Cookie和页面caching(本地主机)。 我也重新启动了Mongrel。 似乎没有任何帮助。
我错过了什么?
在development.rb中的这一行确保caching不会发生。
config.action_controller.perform_caching = false
您可以使用清除Railscaching
Rails.cache.clear
这就是说 – 我不相信这是一个caching问题。 你是否对页面进行了更改,而没有看到它们反映出来? 你可能没有看那个网页的真实版本? 我做了一次(脸红)。
更新:
您可以在控制台中调用该命令。 你确定你在开发中运行应用程序吗?
唯一的select是您要呈现的页面不是正在呈现的页面。
如果你看服务器输出,你应该能看到渲染命令,当页面呈现类似于这样的:
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)
rake tmp:cache:clear
可能是你在找什么。
我能够通过清理我的资产caching来解决这个问题:
$ rake assets:clean
在/ public中检查你的页面的静态版本,如果有的话,删除它。 当Rails 3.xcaching页面时,它会在公用文件夹中保留一个静态版本,并在用户点击您的网站时加载。 即使您清除了caching后,这仍将保持不变。
如果您正在执行片段caching ,则可以通过更新caching键来手动中断caching,如下所示:
版本#1
<% cache ['cool_name_for_cache_key', 'v1'] do %>
版本#2
<% cache ['cool_name_for_cache_key', 'v2'] do %>
或者,您可以根据非静态对象(如ActiveRecord对象)的状态自动重置高速caching,如下所示:
<% cache @user_object do %>
有了这个方法,任何时候用户对象被更新,caching将自动被重置。