我在扫地机中有以下方法:
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 为相同的输入返回相同的结果。考虑到使用相同的缓存配置(并且在两个代码路径中都是相同的),它应该没有副作用。