我在扫地机上有以下方法:
def expire_topic_articles_cache_for topic_id key = fragment_cache_key :controller => :articles, :action => :index, :topic_id => topic_id Rails.logger.debug "Expire article list cache for topic #{topic_id}" Rails.logger.debug " using key #{key}" # use RegExp due to the fragment covering multiple pages expire_fragment %r{#{key}} end
问题在于调用fragment_cache_key。它在一个代码路径中返回正确的密钥,但它在另一个代码路径中返回nil,两次都使用相同的topic_id调用,并且两次都由同一个控制器触发,但来自不同的观察模型。
这对我没有意义。我希望fragment_cache_key为相同的输入返回相同的结果。如果使用相同的缓存配置,它应该是无副作用的(并且在两个代码路径中都是相同的)。
答案 0 :(得分:0)
https://stackoverflow.com/a/2275001/124536
这让我走上了正确的道路:控制器没有为触发清扫器的特定操作配置cache_sweeper。奇怪的是,扫地机无论如何都被触发但是工作不正常。