문제

XHR 객체를 파괴하지 않고 XHR 객체의 resongetext를 지우는 방법이 있습니까?

라이브 데이터를 브라우저에 공급하기 위해 웹 서버에 지속적으로 연결해야합니다. 문제는, 비교적 많은 양의 데이터가 발생한다는 것입니다 (초당 수백 K 지속적으로 수백 K). 메모리 사용은 큰 문제입니다.이 연결은 적어도 몇 분 동안 열려 있어야하기 때문입니다. json이 다시 보내는 JSON이 얻을 수있는 한 작은 크런치가 있었음에도 불구하고 responeetext는 매우 빠르게 커집니다.

서버 측 앱이 작동하는 방식으로 인해 Ajax 스타일의 짧은 폴링을 사용하고 완료되면 XHR 객체를 파괴하는 경우 몇 밀리 초 정도에서도 많은 양의 중요한 데이터를 놓치면 구문 분석하는 데 걸립니다. 응답, 새로운 XHR을 만들어 보내십시오. 웹 서버가 한 번에 하나의 연결 만 허용하므로 중첩 요청을 사용할 수있는 옵션이 없습니다. (묻지 마세요.) 그래서 혜성은 정확히 내가 필요한 모델입니다.

내가하고 싶은 것은 서버에서 돌아올 때 각 JSON 청크를 구문 분석 한 다음 동일한 연결을 계속 사용할 수 있도록 responeetext를 지우는 것입니다. 그러나 relateetext는 읽기 전용입니다. 내가 찾은 방법으로 직접 비울 수는 없습니다.

내가 여기서 놓친 사진의 일부가 있습니까? 누구든지 내가 읽을 때 responseetext를 자유롭게하는 데 사용할 수있는 트릭을 아는 사람이 있습니까? 아니면 서버 응답이 갈 수있는 다른 장소가 있습니까?

코드를 포함하지 않습니다. 이것은 거의 코드 공유 질문이기 때문입니다. XHR을 생성하고 반환 된 데이터를 처리하는 JavaScript 루틴은 매우 간단합니다.

도움이 되었습니까?

해결책

그것은 폴링이 얼마나 오래 작동하는지입니다. 마지막 줄 번호로 인덱스를 읽고 간격의 각 진드기를 해당 지점에서 읽습니다. 하나의 긴 연결이므로 하나의 긴 응답입니다.

신선한 responseText 새로운 연결을 의미합니다. 그러나 더 이상 혜성이 아닐 것입니다;)

다른 팁

Contrary to the other response, "long-polling" is not one long connection. "Long-polling" is many connections in sequence, each set up to stay connected for a reasonably long period of time if no response is needed. They do time out (typically around 25-30s), and then re-establish a new connection. Since HTTP1.1 allows for re-use of existing connections, the connection doesn't have to be re-negotiated, and can therefore be re-established virtually instantly.

So, just use multiple requests. Since there really is negligible overhead to re-establish the connection, and each new connection will enable you to destroy the previous response text, this is perfectly viable solution from a performance/overhead perspective, and would solve your memory issues as well.

[Edit] I'm speaking from experience, as one of the authors of WebSync.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top