2012-02-09 71 views
2

當我使用ajax GET方法時,是否有返回值的大小限制?jQuery或JavaScript ajax get方法的返回值的大小限制?

如果是這樣,這是由於JavaScript/jQuery的限制嗎?瀏覽器?到服務器?

我已經看過似乎表明存在大小限制的較早的文章(5歲以上),但我無法找到有關此主題的任何最新信息。

+1

據我所知,有一個請求大小的限制。也就是說,有些瀏覽器不允許調用超過2K字符的URL ...但對於我不確定的響應,它對我來說真的會感到驚訝...... – 2012-02-09 21:17:05

回答

1

HTTP協議不會限制任何響應的大小,jQuery本身也不會。所以從理論上講,你可以讓你的GET響應儘可能大。

然而在實踐中,有一些限制:Web服務器可能有一個最大響應大小(特別是當你的緩存整個響應),服務器的代碼可能需要需要額外的存儲中間處理步驟中,客戶端需要在處理響應數據之前在某處存儲響應數據,瀏覽器上的JavaScript實現可能會有額外的內存限制(您不希望流氓腳本耗盡所有物理內存:這將是一個嚴重的安全問題)。然而,確切地說,太多的東西很難確定:幾兆字節可能是好的,一兆兆字節當然不是。

請注意,請求方法在這種情況下是相當無趣的;上述問題對POST請求或任何其他HTTP動詞的響應同樣有效。

3

是的,是有限制的。它依賴於架構和可用內存。在具有2G和64位版本的x86_64機器上,它會因InternalError而失敗:但是,腳本堆棧空間配額已耗盡,但在使用4G和64位版本的x86_64上會通過。

因此,它最終取決於正在運行和託管腳本的計算機,以便高效地服務請求。

如果您收到InternalError Script Stack消息,則意味着您需要升級硬件才能運行請求。

「控制」這種做法是做什麼所謂的「節流」。請參閱另一堆棧以供參考: How to rate-limit ajax requests?