更新:似乎我在某种程度上浪费了我的时间,因为根据http://www.browserscope.org/?category=network&v=top-d大多数现代浏览器已经限制了与单个主机的连接数量。 6是适合我目的的常见连接数。但我想这仍然是一个有趣的问题。
我工作任务的拼图的最后一部分是将可能250多个ajax请求列入批量列表。
作为以下php代码的结果
<?
// print("alert(\" booya \");");
$hitlist = array();
$hitlist = urlBuilder($markets,$template);
foreach ($hitlist as $mktlist) {
foreach ($mktlist as $id => $hit) {
$cc = substr($id,0,2);
$lc = substr($id,-4);
echo ("$(\"#" . $cc . $lc . "\").load(\"psurl.php?server=" . $server . "&url=" . $hit . "&port=" . $port . "\");\n");
}
}
?>
这将生成一个jquery .load的长列表,现在它们都是在点击时执行的。
e.g。
$("#sesv-1").load("psurl.php?server=101.abc.com&url=/se/sv&port=80");
$("#sesv-2").load("psurl.php?server=101.abc.com&url=/se/sv/catalog/&port=80");
$("#sesv-3").load("psurl.php?server=101.abc.com&url=/se/sv/catalog/products/12345678&port=80");
$("#atde-1").load("psurl.php?server=101.abc.com&url=/at/de&port=80");
$("#atde-2").load("psurl.php?server=101.abc.com&url=/at/de/catalog/&port=80");
$("#atde-3").load("psurl.php?server=101.abc.com&url=/at/de/catalog/products/12345678&port=80");
$("#benl-1").load("psurl.php?server=101.abc.com&url=/be/nl&port=80");
$("#benl-2").load("psurl.php?server=101.abc.com&url=/be/nl/catalog/&port=80");
$("#benl-3").load("psurl.php?server=101.abc.com&url=/be/nl/catalog/products/12345678&port=80");
$("#befr-1").load("psurl.php?server=101.abc.com&url=/be/fr&port=80");
$("#befr-2").load("psurl.php?server=101.abc.com&url=/be/fr/catalog/&port=80");
$("#befr-3").load("psurl.php?server=101.abc.com&url=/be/fr/catalog/products/12345678&port=80");
根据具体情况,它可能像250个请求,也可能只有30-40个。该应用程序的整个目的是为新的重新启动的应用程序服务器预热......所以新的jvm中的250个请求=死!
理想情况下,我想打破它们。也许市场最好是一次最多5-6个请求。
关于如何实现这一目标的任何想法?是否可以在标准jquery中使用?试图尽可能限制依赖关系,最好没有插件!
答案 0 :(得分:1)
您可以使用jQuery的.queue。
// Define a queue for execution
var
$elem = $("#sesv-1"),
enqueue = function(a){ $elem.queue("status", a) };
// Queue your requests
enqueue(function(a){
$aElem.load("url", a);
});
enqueue(function(a){
$otherElem.load("url", a);
});
// Execute the queue
$elem.dequeue("status");
您可以根据需要创建任意数量的队列(最有可能是每个市场),然后将您的请求排入队列。