当内部HTML发生变化时,过期片段缓存?

时间:2017-09-12 22:14:26

标签: ruby-on-rails caching fragment-caching

我在users.html.slim视图中有以下内容:

.header
  Welcome
  - cache ['user/details', user.last_modified] do
    = render 'user/details', user: @user

我的问题是我更改了user/details标记,由于用户实际上没有更改,我仍然可以获得缓存版本。

根据文档,由于HTML已更改,缓存应该到期

  

视图片段更改时,缓存片段也将过期   (例如,视图中的HTML更改)。的字符串   密钥的结尾是模板树摘要。它是一个MD5哈希计算   基于您正在缓存的视图片段的内容。如果你   更改视图片段,MD5哈希将更改,到期   现有文件。

但情况似乎并非如此。

解决这种情况的正确方法是什么?您依赖键的参数未更改,但实际标记已更改。我正在考虑做类似的事情:

- cache ['user/details/v2', user.last_modified] do
    = render 'user/details', user: @user

但我想知道在这些情况下这是否更合适。

1 个答案:

答案 0 :(得分:0)

而不是user.last_modified只传递user

这将根据user.iduser.updated_at创建缓存密钥。

如果last_modified实际上是您希望成为缓存键的内容,则引用@user但您的缓存密钥为user