Ruby on rails Rails 4缓存:如何禁用特定控制器操作或视图的默认缓存?

Ruby on rails Rails 4缓存:如何禁用特定控制器操作或视图的默认缓存?,ruby-on-rails,ruby-on-rails-4,caching,fragment-caching,Ruby On Rails,Ruby On Rails 4,Caching,Fragment Caching,我们在生产环境中运行Rails 4.2应用程序,并具有以下与缓存相关的配置。到目前为止,我们还没有实现任何缓存技术 config.action_controller.perform_caching = true # Use a different cache store in production. # config.cache_store = :mem_cache_store 我有一个特定的视图问题,它没有相应地显示更新的数据 是否有一种方法可以禁用特定视图(而不是整个应用程序)的片段缓存

我们在生产环境中运行Rails 4.2应用程序,并具有以下与缓存相关的配置。到目前为止,我们还没有实现任何缓存技术

config.action_controller.perform_caching = true

# Use a different cache store in production.
# config.cache_store = :mem_cache_store
我有一个特定的视图问题,它没有相应地显示更新的数据


是否有一种方法可以禁用特定视图(而不是整个应用程序)的片段缓存

TLDR:虽然缓存可能会导致问题,但在尝试修复之前,验证您是否实际使用了它是值得的

禁用单个视图缓存的最简单方法也是最明显但可能很容易忽略的方法:

从视图中删除缓存模型do块

默认情况下,Rails不会为您进行任何缓存,因此这将完全解决这个问题。如果视图中没有块的缓存调用,则不使用缓存

例如:

缓存:

# app/views/something_important/show.html.haml
= cache something_important do
  = render_something_expensive
未缓存:

# app/views/something_important/show.html.haml
= render_something_expensive

为什么不从该视图中删除您的缓存呢?@omnikron-视图中没有编写这样的代码。我认为Rails处理内部Lyno,您必须显式地调用cache,否则您的视图将无法被缓存。如果您在任何地方都没有,则不会缓存任何视图,除非您正在执行其他操作。有关更多信息,请参阅。也许你被它说默认Rails提供片段缓存的地方弄糊涂了?这只是意味着它在默认情况下是可用的——它实际上并没有为您实现它。@omnikron——不太确定。但值得反复检查。Thanks@omnikron-你说得对!我真的对应用程序中的类似视图感到困惑。感谢您对我的上述愚蠢陈述的评论: