Rails:如何使带参数的动作缓存无效?

时间:2013-11-17 07:07:18

标签: ruby-on-rails caching parameters action

我在Rails控制器中有一个动作,它接受一些用于过滤和分页的参数。返回的响应仅采用JSON格式,并且没有视图模板。

我知道可以使用caches_action和cache_path对操作和参数进行缓存。我不理解但无法找到的是如何在所有参数中使该操作的缓存无效。缓存的操作类似于"索引"操作,如果存在创建/更新/删除,则分页会受到影响,因此必须删除该操作的整个缓存。

这一定是一个相当普遍的问题,但我还无法确定它是如何解决的。

1 个答案:

答案 0 :(得分:0)

我能想到的唯一方法是使用google搜索来创建cache_path属性的自定义缓存键:

  • 如果查找单个项目,则自定义缓存键包含该项目的updated_at日期。
  • 如果查找项目列表,则自定义缓存键包括项目数和项目列表的上次updated_at日期。

负面的副作用是即使存在缓存命中也会有数据库调用。 积极的副作用是缓存是自我过期的,因为我使用memcached和memcached使用LRU替换。

我觉得我正在重新发明轮子,但我找不到可靠的文档来更好地解决这个问题。