过滤JSON对象比通过ajax查询数据库更快吗?

时间:2016-12-12 17:28:08

标签: javascript mysql json ajax

我正在开发一个产品页面,您有一组影响价格的选项。 主要选项始终存在,可让您选择材料。然后,根据材料,可以更改选项集。

在数据库中,我有一个表格列出最终产品的价格,这是一个约2000行的表格,列出了每种可用的不同产品。

类似的东西:

product_id / code / price / size / option / color

     1       ABC     20$     1       3        5
     2       DEF     30$     2       4        5
     3       FFF     30$     3       4        5

等等。

整个事情适用于ajax调用,所以每次选项更改时,我都会查询数据库,查找带有该组选项的产品并显示价格。

在这种特定情况下,在一开始就获得整个产品列表(将是单个查询,大约2000行),将它存储在Javascript对象中并过滤它是否有意义?

如果它有任何重要性,我正在使用MySql

2 个答案:

答案 0 :(得分:1)

可能是的,但是有很多变量可能会影响它。我假设:

  • 访客是典型的网络用户
  • ajax请求的往返时间约为100毫秒

鉴于这些情况,您的普通访问者浏览器在此期间几乎可以 搜索数百万的产品。

但是,假设您正在优化用户体验(即由ajax引起的延迟相当明显),您可能想要一个混合体:

到处缓存

您的产品组变化的可能性远远低于人们访问它的频率;这意味着您的数据非常重读。这是避免完全访问数据库并将example.com/products/14/all-options.json之类的内容缓存为静态文件的绝佳机会。

存储文本很便宜。服务器CPU时间减少了。

如果特定产品有很多选项(即成千上万),那么在这种情况下,您可以将它们缓存为静态文件树。例如,example.com/products/14/size-1/all-options.json提供产品#14的#1大小的所有选项。 example.com/products/14/size-1/option-4/all.json的大小均为1,选项为#4,等等。

然后,您可以继续使用Javascript过滤这些较小的集合,并且可能拥有数百万个产品,而无需在启动时拥有大量数据库命中或大量下载。

答案 1 :(得分:0)

javascript中的2000个对象并过滤它没有问题。但请记住这一点。 mysql用于查询数据库是为了更好,并在移动设备中考虑低规格,具有低资源的PC等等。如果2000个对象变成更多?...它将延长请求时间和使用javascript过滤。