更新:似乎我一直在浪費我的時間在一定程度上根據http://www.browserscope.org/?category=network&v=top-d大多數現代瀏覽器已經限制連接到單個主機的數量。 6是適合我的目的的普通連接數。但我想這仍然是一個有趣的問題。JQuery/PHP - 分批分解一堆Ajax請求?
我工作任務拼圖的最後一部分是將可能超過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的這些現在都在執行點擊了一長串的結果。
例如
$("#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個。該應用程序的全部目的是預熱新重新啓動的應用程序...所以250新的jvm =死亡請求!
所以理想情況下,我想打破它們。一次最多5-6次請求可能是市場最好的意思。
關於如何完成這一任何想法?標準jQuery中可能嗎?試圖使依賴性儘可能有限,所以最好不使用插件!
如果你的意思是等待X個請求完成,找出你希望X是什麼,並使用'count'變量在'setTimeout'中運行它們以限制運行的查詢數量。 – 2012-02-21 14:03:22
嗯 - 是的,我猜想甚至比設置x = 5總是有5個跑步更好。即當一個請求完成時,計數減少到4,所以它開始一個新的請求。而不是等待x = 0,然後再開始5個。 – Seer 2012-02-21 14:12:10
如果它適合你,那麼是的,解決方案將確保5總是運行,而不是一次5。 – 2012-02-21 14:15:15