【发布时间】:2014-03-06 09:00:24
【问题描述】:
首先简单解释一下我现在的情况:
我的网页包含(大约 40 个,分类的)过滤器列表和 400 多种产品的列表。
我得到了使用 Ajax 的产品列表。默认情况下会显示 20 个产品,但当您滚动到底部时,会添加更多产品。用户可以通过单击所需选项来过滤结果。这就像一个简化的ebay。唯一的区别是当我点击过滤器时我不会重新加载页面,而是使用 Ajax 来获取我的产品。
现在,ebay 在每个过滤器选项旁边都有这些数字,它显示了如果您点击该选项会获得的结果数量。我的问题是,显示这些数字的最佳方式是什么?
我的方法是为每个过滤器选项运行一个 sql 查询 (SELECT COUNT(id) FROM sometable WHERE filter='something')。然而,这意味着我必须在加载时运行大约 40 个查询,并且每次用户单击一个选项时(使用 Ajax)。这似乎是服务器负载过重,还是我错了?
【问题讨论】:
-
如果您已经在使用 Ajax 我假设您使用 Json,为什么不在本机 javascript 中进行过滤和计数呢? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 然后使用 .length 计算结果?
-
目前我使用 Ajax 调用 PHP 脚本,该脚本返回我的产品。加载时加载了 20 个产品(sql 查询:
LIMIT 0,20)。您建议我加载所有产品,将它们放在一个数组中,然后使用 javascript 过滤?附言。是的,我正在使用 json -
嗯,如果您想在 SQL 中计算可用产品,您需要按照您的建议进行操作,这是一种非常有效的方法。提高效率的唯一方法是存储过程。
-
为什么不在页面加载时额外调用一次 ajax 来获取每个过滤器的总量并将其保存在变量/对象中?那么您可以通过其他 javascript 调用来获取您的 20 种产品。