Javascript 过滤JSON对象是否比通过ajax查询数据库更快?
我正在做一个产品页面,在那里你有一套会影响价格的选项。 主选项始终存在,用于选择材质。然后,根据材质,选项集可以更改 在数据库中,我有一个表,列出了最终产品及其价格,这是一个大约2000行的表,列出了每种具有不同选项的产品 比如:Javascript 过滤JSON对象是否比通过ajax查询数据库更快?,javascript,mysql,json,ajax,Javascript,Mysql,Json,Ajax,我正在做一个产品页面,在那里你有一套会影响价格的选项。 主选项始终存在,用于选择材质。然后,根据材质,选项集可以更改 在数据库中,我有一个表,列出了最终产品及其价格,这是一个大约2000行的表,列出了每种具有不同选项的产品 比如: product_id / code / price / size / option / color 1 ABC 20$ 1 3 5 2 DEF 30$ 2
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对象中并对其进行过滤是否有意义
如果它很重要的话,我在javascript中使用MySql2000对象,并且过滤它没有问题。但请记住这一点。mysql是用于查询数据库的,它是为了更好地考虑低规格的移动设备、低资源的PC等。如果2000个物体变成更多?。。。它将延长请求时间,并使用javascript进行过滤 可能是的,但有很多变量可能会影响它。我假设:
- 访问者是典型的web用户
- ajax请求的往返时间大约为100ms
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过滤这些较小的集合,并可能拥有数百万个产品,而无需在启动时进行大量的数据库点击或ish下载。2000个对象在浏览器中?我不会把这种压力放在客户的浏览器上。你必须考虑缓慢的计算机,这可能会导致脚本不响应(如Firefox)。没有理想的解决方案,但你必须在中间找到一些东西。抛开索引结果和重新排列它们不谈。@AdamAzad我不同意-2000对象对于现代JS引擎来说什么都不是。也就是说,与此同时,WebGL游戏正在处理数十万个物理计算。这个问题没有通用的答案。不过,过滤客户端应该更快<代码>2000
对象似乎不多。你只需要尝试一下,即使是这样,一台内存非常少的机器和一个在旧浏览器中运行脚本的糟糕处理器,以及一个运行缓慢的JS引擎,也不能得到同样的结果。这个问题没有一个简单的答案。太多令人困惑的变量@LukeBriggs webGL游戏正在将这些CALC中的大部分卸载到GPU上,你的普通非OpenGL代码不可能与之竞争。不过你仍然是对的,n*1000甚至n*10000不应该是任何类型的瓶颈,除非可能是在IE中(我仍然希望看到硬数字)。只是为了避免混淆:这是在单个产品页面中,因此用户已经选择了该产品,并有机会对其进行自定义。这意味着优化响应时间可能只会带来更流畅的体验,而不是真正的销售。json文件的想法似乎很好。但是,我不确定如何实现树结构。它们是磁盘中的文件夹吗?或者你的意思是像插图一样的东西?@Carlo-Yep;只是网站文件树中的普通文件夹。每当添加或更改产品时,重新创建文件(这被认为比读取要难得多)。Web服务器在提供静态文件方面表现得非常出色-利用这一优势。@Carlo我做了一些更改,希望能让您更清楚:)非常感谢!我想我需要一些时间来实施这个解决方案,但是你的答案足够完整,所以我接受了。