0

我的 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

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

4

1 回答 1

-1

而不是user.last_modified仅仅通过user

这将基于user.idand创建一个缓存键user.updated_at

如果last_modified实际上是您想要成为缓存键的东西,您引用@user但您的缓存键是user.

于 2017-09-12T22:49:32.287 回答