【发布时间】:2014-10-27 07:16:25
【问题描述】:
我已经使用 jQuery 为工作门户实现了多个复选框过滤,其中我在每次选中复选框时调用一个函数,并且该函数包含一个 ajax 调用,该调用将发送带有选中的请求值,我会查询数据库并返回结果。
但是我遇到的一位开发人员告诉我,您不应该连续访问数据库进行过滤,应该在客户端完成。
他还建议使用 AngularJS 或 Knockout(js),因为它们处理内容,而jQuery 适用于 DOM 元素。
但如果必须在客户端完成,则必须在第一次访问页面时立即加载所有数据,这反过来会降低页面速度。
而且我不能在每个元素上使用类并根据复选框 ID 或类似的值显示/隐藏它们,因为有很多复选框,我认为处理起来会很忙。
如何以良好的性能达到理想的结果?
我是 jQuery 的新手,所以如果我在任何地方出错,请多多包涵。
以下是我实际完成的示例方式:
HTML:
<input type="checkbox" name="location[]" value="Bangalore" onclick="loadresult()">Bangalore
JS:
function loadresult() {
location array value accessed and passed to ajaxcall
//ajax call to processresult.php
Displaying the DB returned Data
}
PHP (processresult.php):
<?php
//dbconnection + querying db and returning result
?>
【问题讨论】:
-
如果您的数据库很小,您的开发人员是正确的。但是如果数据库很大,在客户端加载所有结果是一个坏主意,并且可能会导致浏览器崩溃或第一次加载需要很长时间。如果数据库很大,您应该使用过滤器查询数据库并缓存结果。
-
@CGeorges 这似乎是个好主意,即使我觉得同样的方式可能是我可以使用持久复选框来保留 reload 的值。为什么他说这是他正在处理一个机票预订系统,在该系统中,他们从访问许多数据库中获取数据,我想为了每次访问它都会减慢类似的速度
标签: php jquery angularjs performance