如何在语言环境发生变化时使片段缓存失效?

oct*_*zer 7 caching ruby-on-rails internationalization

我正在尝试使用片段缓存来缓存使用I18n的Ruby on Rails站点上的页脚和导航栏.问题是,更改语言然后会以错误的语言显示页脚和导航栏.当语言环境发生变化时,如何使片段缓存失效?

Fre*_*ung 16

您应该将语言环境作为缓存键的一部分,而不是使片段缓存失效

cache :locale => I18n.locale, ... do
  ...
end
Run Code Online (Sandbox Code Playgroud)

这样,不同的用户可以看到页脚/导航栏的不同语言版本,但所有用户都会看到缓存版本.


wsp*_*ijt 6

在Rails 3中缓存片段时,这对我来说很有用:

- cache([object, locale: I18n.locale]) do
Run Code Online (Sandbox Code Playgroud)