ruby-on-rails - 将序列化的 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_jsonapi
4.9 秒
cache_crispies
5.2 秒
最后,上述方法与序列化程序一样快,但更容易。
但是,对于 10.000 个客户,使用 rails-render-method 生成 json (2.5MB) 的时间大约需要 50 秒。所以,如果必须缓存它。
附加问题:您在这种情况下有什么经验?
最好的问候,克里斯
解决方案
我建议你jb gem。它非常快(比慢fast_json
但稍微慢一点),jb
视图是一个普通的红宝石,所以你得到一个可读的模板,没有丑陋和缓慢jbuilder
但结构清晰。您可以在内部使用缓存jb
,因此您可以根据需要缓存整个 json 或其中的一部分。
推荐阅读
- smtp - Spf 记录防止“太多 MX 资源记录”和太多操作员/删除重复操作
- docker - 气流 kubernetesExecutor :创建后 Worker pod 终止
- asp.net-core - Xamarin:从 ASP.NET Core 后端加载图像会导致证书错误 - Android Amulator
- c++ - 如何从字符串中提取标记?
- java - 将 xml 文件发送到 url 并获得响应
- asp.net-mvc - 级联下拉列表未显示在 ASP.Net MVC 的视图中
- php - Laravel 将自定义值从控制器传送到中间件
- javascript - 是否有正确的方法来使用 fetch 调用数据而不会中断
- python - 删除方法整个文件变得清晰后,无法删除 CSV 文件中的单行
- keras - 谁能帮我理解为什么我的 keras 到 pytorch 的转换不起作用?