【问题标题】:Rails jbuilder caching + queryRails jbuilder缓存+查询
【发布时间】:2023-04-09 12:08:01
【问题描述】:

在一些关于如何缓存 jbuilder 视图和 activerecord 查询的建议之后。我目前这样做的方式感觉不对,因为我基本上在缓存中存储了两件事。我可以以某种方式结合它吗?我需要缓存 SQL 记录,这样数据库就不会受到影响,还要缓存视图文件以最大限度地提高速度。

# Controller
@posts = Rails.cache.fetch ["posts"], :expires_in => 1.hour do
  Post.all.limit(10).order("id desc").to_a
end

# Jbuilder view
json.cache! ["posts"], :expires_in => 1.hour do |json|
    json.array! @posts do |post|
      json.id post.id
      json.title post.title
    end
 end

【问题讨论】:

    标签: ruby-on-rails caching memcached jbuilder


    【解决方案1】:

    我认为你想多了,除非那个 activerecord 查询真的很慢。缓存机制真的很聪明,它会拉你的对象来检查updated_at。如果更新,构建 json 响应。如果没有,则提供先前构建的服务。通常这会将 2 秒的工作缩短到 10 毫秒,或者您的初始数据库查询所需的任何时间。

    但是,如果您坚持,此答案显示了一种方法。 https://stackoverflow.com/a/23783119/252799 请注意,activerecord 调用位于缓存块内,因此只有在缓存未命中时才会执行它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-25
      • 2016-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      相关资源
      最近更新 更多