'Opera'에 해당되는 글 1건

  1. 2007.12.03 Ajax connection module in 4 Huge Browsers(FF, IE, Opera, Safari) (3)
Ajax 브라우저별 HTTP Connection 에 대한 테스트 및 고찰!!
그동안 Ajax 통신은 Wininet.dll (Window 32 Internet API) 로만 통신을 하는 줄 알았습니다.

FF에서 Ajax 최대 커넥션 및 HTML document component 병렬(parallel Downloads)다운로드 테스트 하다가
알게 되었습니다.

사용자 삽입 이미지







각 Ajax 요청에 따른 서버 모듈은 PHP 입니다.

<?php
  sleep(5);
  echo "{ complete : 'ok' }";
?>

즉 단지 5초 동안 대기 한 후 결과값을 반환합니다.

테스트한 결과에 대해 살펴 보겠습니다.


Internet Explore 의 경우

사용 모듈 wininet.dll 을 사용합니다.
그리고 Max-Connection 개수는 아래의 레지스트리 값을 참고합니다.  따로 레지스트리를 건드리지 않은 상태라면 아래의 dword 의 값은 00000002 입니다.

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
  "MaxConnectionsPer1_0Server"=dword:00000002
  "MaxConnectionsPerServer"=dword:00000002

기본 적으로 Ajax 통신은 2개의 커넥션만 가능하게 됩니다.

위의 테스트 할때 커넥션이 몇개 만들어지는지 TCP/IP 커넥션 개수를 보겠습니다.
사용자 삽입 이미지

좌측에서 보는것과 같이
3개의 커넥션이 맺어집니다.

제 레지스트리이에는
00000040 으로 설정되어
있습니다.

16진수로 64개의 커넥션을
허용해 놓은 상태입니다.

그래서 기본적으로 권고하는 2개의 커넥션보다 더 많은 Ajax 요청을 허용하게 됩니다.

Ajax 통신이 완료되면 자동으로 커넥션은 close 됩니다.












이때 과연 어떤 window 모듈을 사용할까요...
사용자 삽입 이미지
좌측에서 보이는 것 처럼 IE에서는 WININET.dll을 사용합니다.















FireFox 의 경우

network.http.max.-persistent-connections-per-server
사용자 삽입 이미지
좌측은 firefox의 config 정보 입니다. IE에서의 레지스트리와 동일한 일을 하는데요.

firefox 의 경우 주소 부분에 "about:config" 라고 입력해서 이동하시면 좌측과 같은 창이 보입니다.  필터 부분에 "network.http.max" 라 입력하시면 IE 의 레지스트리 부분과 유사한 기능을 하는 부분이 보입니다. 위 이미지에서는 파랗게 처리된 부분이 그 부분입니다.

저 같은 경우는 값이 2로 셋팅되어있습니다. 예제 페이지에서는 3개의 Ajax 요청을 합니다.


사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지





























































































위의 이미지 처럼 순차적으로 2개가 완료되고 나면 나머지 1개를 처리하게 됩니다.
당연한 이야기죠..

이어서 과연 Firefox도 Wininet 을 사용하지 않습니다.
사용자 삽입 이미지
mswsock.dll 을 사용해서 Ajax통신을 하게 됩니다.

사실 여기까지만 테스트를 하려고 했으나

혹 Opera 나 Safari 도 궁금할까 해서 간단하게 내부적으로 어떤 모듈을 사용하는지 찾아봤습니다.








Opera의 경우
역시 Opera 도 브라우저에 Config 를 따로 지원합니다. 당연히 브라우저기 때문에 브라우저에 설정 기능이 있어야 하는데.. IE 만 유달리 윈도우 레지스트리에 종속적으로 움직이네요...  별로 싫어집니다..

오페라의 경우도 주소줄에 opera:config 라고 입력하면 뜹니다.
사용자 삽입 이미지
















위의 값 중 Max Connections Server 값입니다. Opera의 경우 기본 값이 8입니다. FF와 같이 동일합니다.

사용자 삽입 이미지
Opera 의 경우도 mswsock.dll 을 사용하여 Ajax 요청을 처리하고 있습니다.














Safari의 경우
Safari 는 Info.plist 파일에 정보를 가지고 있다고 해서 찾아 열어봤지만 어떤 파일인지 찾지 못했습니다.
ㅠ.ㅠ 아무튼 유사한 방식으로 Max Connection 을 설정하고 있습니다.
Safari의 경우도 8정도로 설정되어 있는 것 같습니다. Ajax 요청을 한꺼번에 3개를 요청했는데 이상없이
3개를 동시에 처리 하더군요...

사용자 삽입 이미지
Safari 역시 mswsock.dll 을 사용하여 Ajax 요청을 하는 걸로 들통 났습니다.

















그런데 왜 굳이 IE는 지금 시스템을 고치려 하지 않을 까요?
Window 에서 돌아가는 브라우저들이라 해서 IE는 윈도우 깔면 자동으로 깔리는 임베디드형 어플리케이션이라서 W3C에서 권고한 DOM Standard도 따르지 않고 레지스트리에다가 설정하고 Wininet.dll 을 사용하고

기본 설정이 왜 2여야만 하는지 좀 다른 브라우저하고 표준에 대해서 Standard 에 대해서 논의 해보고 좀 맞추면 안되나?? 
신고
Posted by Rhio.kim