2010-03-23 3 views

답변

5

블로킹은 다른 이벤트 나 코드를 처리하지 못하도록하는 이벤트 (동일한 스레드 내에서)를 설명하는 데 사용되는 용어입니다.

예를 들어 "블로킹"소켓을 사용하면 소켓 요청 후 코드는 요청이 완료 될 때까지 (동일한 스레드 내에서) 처리되지 않습니다.

비동기 활동 (비 차단)은 요청을 백그라운드로 실행하고 요청이 백그라운드에서 실행되는 동안 다른 코드가 실행되도록합니다.

기본적으로 방화 광/브라우저의 특정 부분은 다른 부분이 완료 될 때까지 활성화 할 수 없습니다. 나는. 더 많이 다운로드하기 전에 이미지를 다운로드하기를 기다리고 있습니다.

+3

이러한 차단 문제를 제거하도록 Apache 서버를 설정할 수 있습니까? 나는 거의 모든 IIS 사이트들이 지연을 차단하는 것을 막아 버리기 때문에 서버가 그것을 할 수 있다고 확신하지만, "깨끗한"아파치 설치는 그것을한다. ... – Laserson

27

"차단"(이전 버전의 FireBug)은 "대기열"이라고 불렀습니다. 실제로 요청은 사용 가능한 연결을 기다리는 대기열에 있습니다. 내가 아는 한 기본적으로 영구 연결 수는 Firefox의 마지막 버전에서 6, IE8 또한 6입니다. 이전 버전에서는 2였습니다. 브라우저 설정에서 사용자가 변경할 수 있습니다.
또한 JavaScript 파일이로드되는 동안 다른 모든 리소스 (CSS, 이미지)가 차단된다는 것을 알고 있습니다.

+0

나는 이것이 왜 자바 스크립트 파일을 마지막으로로드해야하는지 추가하고 싶다. 가능하다면). 페이지가 CSS 나 이미지가로드 될 때까지 기다리지 않아도 사용자가 훨씬 빠르게로드하는 것처럼 보입니다. – dspacejs

+0

해당 [Mozilla 공식 문서] (https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor#Timings)도 참조하십시오. – tanius

4

내가 아는 한 두 가지 이유로 인해 다른 요소가로드되지 못하게됩니다.

  1. 한 번에 특정 호스트에서로드 할 수있는 병렬 리소스의 수를 브라우저에서 강제로 제한합니다. 전혀 (페이지의 콘텐츠를 단지의 경우 자바 스크립트 리디렉션 또는 대체) 구성 요소의 나머지 부분을 다운로드 강행 할 필요가있는 경우 브라우저가
1
지켜봐야 될 수 있습니다
  • 인라인 자바 스크립트,

    "연결 대기 중"을 의미합니다. 공식 documentation by Mozilla에서 설명한 것처럼 "차단"은 "네트워크 연결을 기다리는 대기열에서 보낸 시간"입니다. 파이어 폭스가 내부 병렬 연결 한도에 도달했기 때문일 수있다.

    "서버가 사용 중이므로 대기 중임"을 의미 할 수도 있습니다. "차단"시간에 대한 한 가지 가능한 이유는 위에 링크 된 공식 문서에 없습니다. 서버가 과부하로 인해 연결을 제공 할 수없는 경우에 발생할 수 있습니다. 이 경우 연결 요청은 작업자 프로세스가 사용 가능 해지면 처리 될 때까지 서버의 대기열로 이동합니다 [source].

    기술적 인 의미에서 요청은 서버 [source]에서 accept()을 기다리고 있기 때문에 이러한 연결이 아직 설정되지 않았습니다. 그리고 아마도 파이어 폭스가 "블로킹 (Blocking)"에 포함 된 이유이기도하다. "네트워크 연결을 기다리는 대기열에서 보낸 시간"이라고 생각할 수도 있기 때문이다.

    (이 동작은 Firefox 51과 완전히 일치하지 않습니다. 새 탭에서 호출 된 첫 번째 URL의 경우 서버가 연결 요청을 수락하기 전의 시간은 "타이밍"탭에서만 계산되지 않습니다. 두 URL 중 하나라도 버그 일 수 있으며 어떤 URL인지 알 수 없습니다.)

  • 관련 문제