我正在开发一个产品页面,您有一组影响价格的选项。 主要选项始终存在,可让您选择材料。然后,根据材料,可以更改选项集。
在数据库中,我有一个表格列出最终产品的价格,这是一个约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
答案 0 :(得分:1)
可能是的,但是有很多变量可能会影响它。我假设:
鉴于这些情况,您的普通访问者浏览器在此期间几乎可以 搜索数百万的产品。
但是,假设您正在优化用户体验(即由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过滤。