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将自动被重置。