XHR 객체를 파괴하지 않고 XHR 객체의 responseText를 지우는 방법이 있습니까?Comet, responseText 및 메모리 사용량
라이브 데이터를 브라우저에 제공하려면 웹 서버에 영구 연결을 유지해야합니다. 문제는 상대적으로 많은 양의 데이터 (초당 수백 K)가 있기 때문에 메모리 사용이 큰 문제라는 것입니다. 왜냐하면이 연결은 적어도 몇 분 동안 열려 있어야하기 때문입니다. responseText는 매우 빠르게 커집니다. JSON을 다시 보낼 때 얻을 수있는만큼 작은 크기로 돌려 놓았습니다.
서버 측 응용 프로그램의 작동 방식 때문에 AJAX 스타일의 짧은 폴링을 사용하고 XHR 객체를 끝내면 XHR 객체를 파괴하면 몇 밀리 초 안에 중요한 데이터가 상당 부분 누락됩니다. 응답을 구문 분석하고, 새로운 XHR을 작성하여 전송합니다. 웹 서버는 한 번에 하나의 연결 만 허용하기 때문에 중복되는 요청을 사용할 수있는 옵션이 없습니다. (묻지 마십시오.) 그래서 혜성은 내가 필요한 모델입니다.
내가하고 싶은 것은 서버에서 돌아와서 각 JSON 청크를 구문 분석 한 다음 responseText를 지워서 동일한 연결을 계속 사용할 수있게하려는 것입니다. 그러나 responseText는 읽기 전용입니다. 내가 찾은 방법으로는 직접 비울 수 없습니다.
여기에 그림이 누락 되었습니까? 누구든지 내가 그것을 끝내면 responseText를 비우는 데 사용할 수있는 트릭을 알고 있습니까? 아니면 서버 응답이 갈 수있는 다른 장소가 있습니까?
코드를 포함하지 않기 때문에 실제로 이것은 거의 코드에 무관심한 질문입니다. XHR을 생성하고 반환 된 데이터를 처리하는 Javascript 루틴은 매우 간단합니다.
감사합니다. 모델을 이해합니다. 그 연결에서받은 모든 것을 거대한 버퍼에 저장하지 않고 연결을 유지할 수있는 방법이 있기를 바랬습니다. Long-polling은 어쨌든 해킹입니다. 정확히 내가 필요로하는 방식으로 정확히 작동하게하려면 많이 묻습니다. – glomad
@ithcy : 실제로 합리적인 요청처럼 보입니다. 나는 당신이 물어볼 때까지 그것에 대해 결코 생각하지 못했습니다. 'xhr.flushResponseBuffer()'또는 무엇인가는 장시간 실행되는 연결에 유용 할 수 있으며 항상 줄 번호 참조를 저장하지 않아도됩니다. –