首页 > 解决方案 > 将序列化的 json 渲染为字符串

问题描述

有没有办法将哈希或 json 呈现给变量?

案例:带有 react/redux、postgres 的 Rails-app

  def index
    start = Time.now
    c = Customer.all.first(1000)
      respond_to do |format|
        format.json { render json: c,
                             except: [:created_at, :updated_at],
                             include: [{addresses: {except: [:created_at, :updated_at, :country, :canton],
                                                    methods: [:canton_name, :country_name]}},
                                       {latest_order: {only: [:date, :title]}}]
        }
      end
    write_log(c, start)
  end

我想生成一个嵌套散列,例如客户、位置和最新订单,并将其缓存。

1000 位客户的性能测试:上面的代码:5.3 秒渲染相同的 json, fast_jsonapi4.9 秒 cache_crispies5.2 秒

最后,上述方法与序列化程序一样快,但更容易。

但是,对于 10.000 个客户,使用 rails-render-method 生成 json (2.5MB) 的时间大约需要 50 秒。所以,如果必须缓存它。

附加问题:您在这种情况下有什么经验?

最好的问候,克里斯

标签: ruby-on-railsserialization

解决方案


我建议你jb gem。它非常快(比慢fast_json但稍微慢一点),jb视图是一个普通的红宝石,所以你得到一个可读的模板,没有丑陋和缓慢jbuilder但结构清晰。您可以在内部使用缓存jb,因此您可以根据需要缓存整个 json 或其中的一部分。


推荐阅读