Rails - 使用特定属性值缓存所有用户

Posted

技术标签:

【中文标题】Rails - 使用特定属性值缓存所有用户【英文标题】:Rails - Caching all the users with a specific attribute value 【发布时间】:2020-02-14 02:35:28 【问题描述】:

在 Rails 6 应用程序中,我有一个页面显示所有管理员用户。 由于列表很少更改,我想缓存片段。

如何处理这样的缓存?

我想使它无效我应该在用户模型中使用某种after_save 回调来检查保存的用户是刚刚成为管理员还是不再是管理员。

有什么想法吗?

【问题讨论】:

【参考方案1】:

无需回调。您可以设置缓存密钥,因此每次有新管理员时,密钥都会更改并生成新的缓存。例如:

<% cache "admin-list-#@admins.count" do %>
  <% @admins.each do |admin| %>
    <%= admin.name %>
  <% end %>
<% end %>

如果管理员信息发生变化而管理员用户数量不变,您可以使用集合缓存:

https://guides.rubyonrails.org/caching_with_rails.html#collection-caching

<%= render partial: 'users/admin', collection: @admins, cached: true %>

要在开发中测试缓存,请使用以下命令: rails dev:cache

【讨论】:

感谢您的回复。管理员数量不变的情况如何。 IE。在添加 Bob 的同时将 Tony 从管理员中删除? 我认为这种情况下更好的方法是集合缓存,我会更新我的答案 集合缓存似乎正是我想要的。谢谢。

以上是关于Rails - 使用特定属性值缓存所有用户的主要内容,如果未能解决你的问题,请参考以下文章

由于缓存目录将所有权更改为 root,Rails 6 应用程序失败

防止 Chrome 缓存特定字段

带有查询字符串参数的 Rails 动作缓存

缓存用户特定的邻近搜索

如何缓存 Rails webpack 包

内存键值缓存是不是包含引用值?