有没有一种方法可以在不销毁XHR对象的情况下清除XHR对象的responseText?
我需要与Web服务器保持持久连接,向浏览器提供实时数据。问题是,有大量的数据(每秒几百K)不断传输,因此内存使用是一个大问题,因为这个连接必须至少保持几分钟。即使我发送的JSON已经压缩到最小,responseText也会非常快地变得非常大。
由于服务器端应用程序的工作方式,如果我使用AJAX-style短轮询并在完成后销毁XHR对象,即使在解析响应,创建新XHR并将其发送出去的几毫秒内,我也会错过大量重要数据。我无法使用重叠请求选项,因为Web服务器一次只接受一个连接。(别问我为什么。)因此Comet正是我需要的模型。
我想做的是在每个JSON块从服务器返回时解析它,然后清除responseText,以便我可以继续使用同一个连接。但是,responseText是只读的。我找到的任何方法都不能直接清空它。
我是否漏掉了什么?有人知道我可以使用哪些技巧来释放responseText吗?或者还有其他地方可以放置服务器响应吗?
我没有包含代码,因为这实际上几乎是一个与代码无关的问题。生成XHR并处理返回数据的Javascript例程非常简单。
我需要与Web服务器保持持久连接,向浏览器提供实时数据。问题是,有大量的数据(每秒几百K)不断传输,因此内存使用是一个大问题,因为这个连接必须至少保持几分钟。即使我发送的JSON已经压缩到最小,responseText也会非常快地变得非常大。
由于服务器端应用程序的工作方式,如果我使用AJAX-style短轮询并在完成后销毁XHR对象,即使在解析响应,创建新XHR并将其发送出去的几毫秒内,我也会错过大量重要数据。我无法使用重叠请求选项,因为Web服务器一次只接受一个连接。(别问我为什么。)因此Comet正是我需要的模型。
我想做的是在每个JSON块从服务器返回时解析它,然后清除responseText,以便我可以继续使用同一个连接。但是,responseText是只读的。我找到的任何方法都不能直接清空它。
我是否漏掉了什么?有人知道我可以使用哪些技巧来释放responseText吗?或者还有其他地方可以放置服务器响应吗?
我没有包含代码,因为这实际上几乎是一个与代码无关的问题。生成XHR并处理返回数据的Javascript例程非常简单。
xhr.flushResponseBuffer()
或类似的东西对于长时间运行的连接可能非常有价值,并且可以避免一直保存该死的行号引用。 - Crescent Fresh