这是我的第一个 Rails 应用程序,我现在正在尝试适当地优化和缓存,一开始可能有点令人生畏。
无论何时Programs
列出,如果它User
是它的创建者,Program
它会显示一个“编辑程序”按钮。否则,不显示任何内容。
程序列表不会经常更改(可能一天几次?)缓存它的最佳方法是什么?
似乎为每个用户/程序关系做一个片段缓存是错误的,因为只有一个User
人会看到那个按钮。
或者我只是需要重新设计我的视图来忽略这个问题。
这是我的第一个 Rails 应用程序,我现在正在尝试适当地优化和缓存,一开始可能有点令人生畏。
无论何时Programs
列出,如果它User
是它的创建者,Program
它会显示一个“编辑程序”按钮。否则,不显示任何内容。
程序列表不会经常更改(可能一天几次?)缓存它的最佳方法是什么?
似乎为每个用户/程序关系做一个片段缓存是错误的,因为只有一个User
人会看到那个按钮。
或者我只是需要重新设计我的视图来忽略这个问题。
我建议做一个既基于程序又基于诸如program.owned_by(user)之类的方法的缓存键。
例如,视图可能是这样的
<% cache [program.cache_key, program.owned_by?(user)] do %>
# all of your view code here
<% end %>
这将做的是不仅在程序上创建片段缓存,而且无论该事物是否由用户对象拥有。program.cache_key 将基于程序 updated_at 时间戳,因此它应该在必要时过期。这个复合缓存键的第二部分本质上是真或假,这取决于程序是否归用户所有。您必须在模型中实现该方法。
希望这可以帮助。