我正在处理一个产品页面,其中有一组会影响价格的选项。 始终存在的主要选项可让您选择 Material 。然后,根据 Material 的不同,选项集可能会发生变化。
在数据库中,我有一个表格列出了最终产品及其价格,这是一个大约 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
最佳答案
可能是,但有很多变量会影响它。我假设:
- 访问者是典型的网络用户
- 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 过滤这些较小的集合,并可能拥有数百万种产品,而无需在启动时进行大量的数据库命中或大量下载。
关于javascript - 过滤 JSON 对象比通过 ajax 查询数据库更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41106261/