문제

AJAX를 사용하여 페이지를 다시로드하지 않고 일부 값을 업데이트하는 웹 페이지를 만들었습니다. xmlhttprequest 객체를 사용하여 게시물 요청을 보내고 있으며 응답이 도착하면 호출되는 콜백 함수를 할당하며 잘 작동합니다.

그러나 ... 세계에서 브라우저는 일부 IP에서 나오는 일부 데이터를 알고 있습니까? 포트는이 특정 콜백 기능으로 전송되어야합니까? 최악의 시나리오에서는 Firefox와 IE가 동일한 서버에서 대략 같은 시간에 게시물 요청을 작성하고 응답이 이전에 도착하기 전에 후속 게시물 요청을하는 경우 데이터가 어떻게 발생합니까? 오른쪽 콜백 함수로 라우팅 되나요 ??

도움이 되었습니까?

해결책

각 HTTP 요청은 별도의 TCP 연결에 있습니다. 브라우저는 단순히 데이터가 해당 연결로 돌아 오기를 기다린 다음 콜백 기능을 호출합니다.

하위 레벨에서 OS의 TCP 구현은 각각의 "소스 포트"를 사용하여 각 소켓 (즉 연결)에 속하는 패킷을 추적합니다. 소켓을 열기위한 조회 테이블 매핑 소스 포트가 있습니다.

브라우저가 하나의 서버에 대한 동시 연결 수는 제한되어 있습니다 (일반적으로 2). 이것은 페이지가 데이터를 보내고 받기 위해 다시로드 된 예에 합리적 이었지만,이 깨달은 Ajax 시절에는 진정한 성가신 일입니다. 보다 그 페이지 문제에 대한 흥미로운 토론을 위해.

다른 팁

각 요청에는 자체 연결이 있습니다. 단일 연결이있는 경우 물론 단일 응답이 있고이 응답은 콜백에 있습니다.

일반적인 아이디어는 브라우저가 새로운 연결을 완전히 열고 서버에 요청하고 응답을 기다립니다. 이것은 모두 JavaScript API를 통해 브라우저에서 관리하는 하나의 연결입니다. 브라우저가 무언가를 밀어 내면 연결이 나빠지지 않은 다음 다시 픽업하므로 요청을 시작한 브라우저는 요청이 완료 될 때 수행해야 할 작업을 알고 있습니다.

진정으로 일을 비동기로 만드는 것은 이러한 연결이 백그라운드에서 별도로 발생할 수 있다는 것입니다. 이로 인해 여러 요청이 응답을 기다리는 동안 여러 요청이 나가고 돌아올 수 있습니다. 이것은 나중에 무언가를 반환하는 서버로 보이는 멋진 Ajax 효과를 제공합니다.

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