문제

AJAX 호출에 의존하여 정보를 검색하고 10 초마다 클라이언트 페이지를 업데이트하는 솔루션을 개발했습니다. 이것은 잘 작동하지만 클라이언트에서 서버로 다시 전달되는 헤더의 수와 길이를 고려할 때 코드의 확장성에 걱정됩니다. 서버 측에서 많은 중복 헤더를 제거했습니다.

내 회사가 사용하는 브라우저는 IE (버전 6, 곧 7으로 업그레이드 됨)입니다. 이것은 내 현재 코드의 근사치입니다.

var xmlHTTP = new ActiveXObject('Microsoft.XMLHTTP');

xmlHTTP.onreadystatechange = function() {
    if ((xmlHTTP.readyState == 4) && (xmlHTTP.status == 200)) {
        myCallbackFunction(xmlHTTP);
    }
};

xmlHTTP.open('GET', 'myUrl.aspx');

try {
    xmlHTTP.setRequestHeader("User-Agent", ".");
    xmlHTTP.setRequestHeader("Accept", ".");
    xmlHTTP.setRequestHeader("Accept-Language", ".");
    xmlHTTP.setRequestHeader("Content-Type", ".");
} catch(e) {}

xmlHTTP.send();

하지만 나는 읽었다 이 헤더 중 일부를 지울 수 있다는 것은 IE6에서 작동하는 방법을 찾지 못했습니다. 그것들을 null로 설정하면 유형 불일치 예외가 발생하여 ''만 교체했습니다. 당분간. 그것들을 지우는 또 다른 방법이나 제출 된 HTTP 헤더를 줄이는 대체 방법이 있습니까?

또한 '참조기'헤더를 전혀 교체하거나 단축하는 방법이없는 것 같습니다.

도움이 되었습니까?

해결책

에 따르면 WD 사양

setRequestHeader () 메소드는 인수로 주어진 HTTP 헤더가 이미 요청 헤더 목록의 일부인 경우 값을 추가합니다.

즉, 헤더 만 추가하고 교체 할 수 없습니다.

이것은 현재 브라우저 동작과 완전히 일치하지 않지만 브라우저가 향하는 곳일 수 있습니다.이 경우이 전선의 모든 노력은 장기적으로 시간 낭비입니다. 어쨌든 설정 헤더가있는 현재 브라우저 동작은 매우 다양하며 일반적으로 의존 할 수 없습니다.

'Referrer'헤더를 전혀 교체하거나 단축 할 방법이없는 것 같습니다.

어떤 사람들은 '참조'[sic]를 액세스 제어 메커니즘으로 잘못 사용한다는 점을 감안할 때 놀라지 않을 것입니다.

현재 페이지 URL이 지나치게 길지 않도록 노력할 수 있지만 솔직히 말하면이 모든 냄새가 나에게 조기 최적화 냄새가납니다. 당신이 무엇을하든 당신의 요청은 하나의 IP 패킷 내에 맞을 것이므로, 큰 가시적 성능 차이가 될 수는 없습니다.

Mibbit은 상당히 엄청난 양의 트래픽을 그려서 간단한 회사 전체 응용 프로그램의 경우 크로스 브라우저와 프록시 테스트-버든 : 헤더와 혼란의 최종 사용자 이익 비율은 그만한 가치가 있습니다.

다른 팁

IE 6 이상의 버전은 MSXML.XMLHTTP (실제로 파생 된 ixmlhttprequest), IE 7 및 Mozilla와 같은 다른 현대식 브라우저는 XmlHttpRequest. 이것이 아마도 요청 헤더를 설정할 수없는 이유 일 것입니다. null MSXML 구현의 경우, 내장 내장 객체는 가능합니다.

그러므로 나는 모든 헤더를 집합 적으로 지우는 방법이 있다고 생각하지 않습니다. 당신이있는 mibbit에 대한 링크는 모든 헤더를 하나씩 null로 설정하는 함수 만 제공합니다. 정상적인 시나리오의 경우 헤더를 줄이면 트래픽 부하를 줄이는 데 매우 중요하지 않을 수 있습니다.

즉, 요청 헤더를 "." 빈 줄보다는 대신 "".

나는 이런 종류의 미세 최적화를 포기하고 대신 푸시 모델을 조사 할 것이다. 시작 장소를 통해 :

  • Flash는 지속적인 소켓을 생성하고 이벤트를 JavaScript로 브로커 할 수 있습니다.
  • 동기식 HTTP (BOSH)를 통해 양방향 스트림을 구현할 수 있습니다. 보다 http://xmpp.org/extensions/xep-0124.html

이 두 가지 모두 일반적으로 백엔드의 XMPP 서버와 쌍을 이룹니다.

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