【问题标题】:non-deterministic behavior of fragment_cache_keyfragment_cache_key 的非确定性行为
【发布时间】:2013-07-29 19:35:54
【问题描述】:

我在扫地机中有以下方法:

def expire_topic_articles_cache_for topic_id key = fragment_cache_key :controller => :articles, :action => :index, :topic_id => topic_id Rails.logger.debug "主题 #{topic_id} 的文章列表缓存过期" Rails.logger.debug “使用键 #{key}” # 由于片段覆盖多个页面,所以使用正则表达式 expire_fragment %r{#{key}} 结尾

问题在于调用 fragment_cache_key。它在一个代码路径中返回正确的键,但在另一个代码路径中返回 nil,两次都使用相同的 topic_id 调用,两次都由同一个控制器触发,但来自不同的观察模型。

这对我来说毫无意义。我希望 fragment_cache_key 为相同的输入返回相同的结果。考虑到使用相同的缓存配置(并且在两个代码路径中相同),它应该没有副作用。

【问题讨论】:

    标签: caching ruby-on-rails-3.2 sweeper


    【解决方案1】:

    叹息......在这里挖掘了一段时间后,我找到了这个答案:

    https://stackoverflow.com/a/2275001/124536

    这让我走上了正确的道路:控制器没有为触发清扫器的这个特定操作配置 cache_sweeper。奇怪的是,扫地机无论如何都被触发了,但只是无法正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      • 2020-12-14
      相关资源
      最近更新 更多