有沒有辦法清除XHR對象的responseText而不破壞XHR對象?Comet,responseText和內存使用
我需要保持一個持久連接對Web服務器開放,以將實時數據提供給瀏覽器。問題是,有相當多的數據通過(每秒幾百K),所以內存使用率是一個大問題,因爲此連接必須保持打開至少幾分鐘。 responseText非常快速地變得非常大,儘管我發回的JSON已經儘可能小。
由於服務器端應用程序的工作原理,如果我使用AJAX風格的短輪詢並在完成XHR對象時銷燬XHR對象,即使在幾毫秒內也會丟失大量重要數據需要解析響應,創建一個新的XHR並將其發送出去。我沒有選擇使用重疊的請求,因爲Web服務器一次只接受一個連接。 (別問。)所以彗星正是我需要的模型。
我想要做的是解析每個JSON塊,因爲它從服務器回來,然後清除responseText,以便我可以繼續使用相同的連接。但是,responseText是隻讀的。它不能通過我找到的任何方法直接清空。
有沒有我在這裏失蹤的圖片的一部分?有沒有人知道我讀過它時可以用來釋放responseText的任何技巧?還是有另一個服務器響應可以去的地方?
我不包括代碼,因爲這實際上幾乎是一個代碼不可知的問題。產生XHR並處理返回數據的Javascript例程非常非常簡單。
謝謝。我理解這個模型。我只是希望有一種方法可以保持連接,而不會被迫在一個巨大的緩衝區中存儲在該連接上收到的所有內容。 無論如何,長輪詢是一種黑客行爲,所以我想這需要很多才能讓它按我需要的方式工作:) – glomad 2009-08-14 21:21:24
@ithcy:它實際上看起來像一個合理的請求。直到你問起,我從來沒有想過這件事。一個'xhr.flushResponseBuffer()'或其他東西對於長時間運行的連接可能是有價值的,並且會節省不得不一直保存該死的行號參考。 – 2009-08-14 21:26:35