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

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

我正在做一个产品页面,在那里你有一套会影响价格的选项。 主选项始终存在,用于选择材质。然后,根据材质,选项集可以更改

在数据库中,我有一个表,列出了最终产品及其价格,这是一个大约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对象中并对其进行过滤是否有意义


如果它很重要的话,我在javascript中使用MySql

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

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

  • 访问者是典型的web用户
  • ajax请求的往返时间大约为100ms
考虑到这些情况,在这段时间内,你的普通访客浏览器几乎肯定可以搜索数百万种产品

但是,假设您正在优化用户体验(即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过滤这些较小的集合,并可能拥有数百万个产品,而无需在启动时进行大量的数据库点击或ish下载。

2000个对象在浏览器中?我不会把这种压力放在客户的浏览器上。你必须考虑缓慢的计算机,这可能会导致脚本不响应(如Firefox)。没有理想的解决方案,但你必须在中间找到一些东西。抛开索引结果和重新排列它们不谈。@AdamAzad我不同意-2000对象对于现代JS引擎来说什么都不是。也就是说,与此同时,WebGL游戏正在处理数十万个物理计算。这个问题没有通用的答案。不过,过滤客户端应该更快<代码>2000
对象似乎不多。你只需要尝试一下,即使是这样,一台内存非常少的机器和一个在旧浏览器中运行脚本的糟糕处理器,以及一个运行缓慢的JS引擎,也不能得到同样的结果。这个问题没有一个简单的答案。太多令人困惑的变量@LukeBriggs webGL游戏正在将这些CALC中的大部分卸载到GPU上,你的普通非OpenGL代码不可能与之竞争。不过你仍然是对的,n*1000甚至n*10000不应该是任何类型的瓶颈,除非可能是在IE中(我仍然希望看到硬数字)。只是为了避免混淆:这是在单个产品页面中,因此用户已经选择了该产品,并有机会对其进行自定义。这意味着优化响应时间可能只会带来更流畅的体验,而不是真正的销售。json文件的想法似乎很好。但是,我不确定如何实现树结构。它们是磁盘中的文件夹吗?或者你的意思是像插图一样的东西?@Carlo-Yep;只是网站文件树中的普通文件夹。每当添加或更改产品时,重新创建文件(这被认为比读取要难得多)。Web服务器在提供静态文件方面表现得非常出色-利用这一优势。@Carlo我做了一些更改,希望能让您更清楚:)非常感谢!我想我需要一些时间来实施这个解决方案,但是你的答案足够完整,所以我接受了。