10. Client


  하나의 어플리케이션을 동시에 수많은 사용자가 접근하게 되는데, 이때 각 사용자들을 구분하는데 사용되는 객체이다. 즉, 브라우저에 대한 ID같은 것을 부여할 수 있는 것으로, 구현 방식에 따라 client에 저장하는 방식과 server에 저장하는 방식으로 나누어 볼 수 있다. 다음은 각 방식의 장단점이다.

Client에 저장하는 방식Server에 저장하는 방식
네트웍 traffic이 증가네트웍 traffic감소
서버에 별도의 메모리가 필요없다.서버에 별도의 메모리를 사용한다.
다중의 사용자 접근시 주로사용제한된 인원 접근시 주로사용


  • Client Cookie방식

      브라우저의 Cookie값으로 저장하는 방식으로, 사용자들이 많을 경우 사용되는 기법이다.기록되는 방식은 name=value 형태인데, 모든 client 값들이 각각 저장이된다.

    자바스크립트와 Cookie   현재의 URL에 저장된 Cookie값을 브라우저에서 바로 조회할 수 있다. Location(브라우저에서 www.yahoo.com과 같이 기록하는 부분)에 다음과 같이 작성하면, 다 보여준다.

    javascript:alert(document.cookie);
      Cookie값을 바꾸고 싶다면,

    javascript:void(document.cookie="name=kk");


      위와 같이 client에 저장된 모든 cookie값은 조금만 자바스크립트를 사용할 줄아는 사용자에 의해서 깨지게 된다. 따라서, 현재 이글을 읽고 있는 개발자들이 있다면, 지금 즉시 확인해 보고 수정하는 것 좋다. MD5와 같은 checksum 방식을 사용하거나, 암호화 기법을 사용해야 한다.

      하나의 쿠키는 4KB까지 가능하며, 하나의 어플리케이션에서 20개 까지 사용이 가능하다.

  • Client URL

      URL에 필요한 정보들을 추가하는 방식이다. 이 방식은 브라우저의 Location이나 Document/Frame Info를 통해서 정보들의 값을 다 볼 수 있고, 즉시 고칠 수 도 있다. 대부분의 Search엔진들이 이 방식을 사용한다. 다음은 yahoo에서 deadfire라는 문자를 찾을 때 Location에 나타나는 예이다.

    http://search.yahoo.co.kr/bin/search?p=deadfire
      한가지 주의할 사항은 from의 전송방식으로 GET방식을 사용하게 되면, URL에 정보를 기록해야 하는데, 브라우저에서 이방법을 사용하게 되므로 서버로 아무것도 전달되지 않을 수도 있다. 따라서, get방식을 사용할 때는 이방식은 사용하지 않는 것이 좋다.

      또하나는 URL은 지정된 크기가 존재하여(보통 4KB로 웹서버마다 다르다.) 해당 크기까지만, 지원하므로 그 이상이되면, 짤려나간다.

  • Server Cookie

      이 방식은 브라우저에 고유한 ID를 Client Cookie값으로 저장하는 것이다. 그리고, 그 ID에 해당하는 값들은 서버, 즉 웹서버측에서 각 ID에 종속된 값들을 모두 기억하고 있다가 필요할 때 하나씩 빼서 쓰는 방식이다.( 즉, 서버에 별도의 메모리가 할당되어 각 ID마다 필요한 정보들을 담아놓는다. ) 이 ID는 자동으로 할당되며, 실제로 저장될 때 예는 다음과 같다.

    NETSCAPE_LIVEWIRE_ID=1219AAAA1896BA513E60B4B387559A29400108F68
      간단히 서버의 특정한 메모리를 지칭하는 고유한 값(ID)를 브라우저의 Cookie에 저장하여 이를 계속 활용하는 방벙을 말한다. 이 방법이 가장 보편적인 방법이다.D

  • Server URL

      Client URL 방식과 같이 URL에 정보를 넘겨준다. 그러나 넘기는 정보는 해당 client의 ID만 넘어가며, 실제로는 Server Cookie에서와 같이 하나의 ID에 여러 정보들이 서버에 저장되어 참조하는 기법으로 사용된다. URL로 전송되는 정보의 예는 다음과 같다.

    http://server.domain:80/man.html?NETSCAPE_LIVEWIRE_ID=E40152BAFF03790E8511925F943A4C6B00108F69
      앞의 client URL방식과 같이 get방식은 사용하지 말기 바란다.

  • Server IP

      이방식은 Server Cookie와 똑같이 작동한다. 단지 Client ID로 브라우저가 사용되는 PC의 IP Address를 사용하는 점만 다른다. 이 방식을 사용할 때, proxy를 사용하는 곳에서는 문제를 일으킨다. 즉, 모든 PC의 IP Address가 proxy의 IP로 변경되므로, 예상치 못한 결과가 발생하기도 한다.

  • 무슨 방법을 쓸것인가?

      5가지 방식중에 앞에서도 언급했지만, 사용자가 엄청나게 많다면, client cookie방식을 쓰길 권장하며, 가장 빠른 속도를 원한다면, server ip방식을 사용하는 것이 좋다. 그러나, proxy를 사용한다면 server ip방식을 쓰지 않아야 한다. 서버에 메모리가 많지 않다면, server방식은 오히려 부담이 될 수 있으며, 네트워 트래픽이 많은 곳에서는 client방식이 부담될 수 있다.

    Server Cookie 방법이 가장 보편적인 방법이다.

      모든 것이 그렇지만, 뭘 사용하느냐는 전적으로 당신에게 달려 있다.

- Last Update : 2001.7.5 by Deadfire(http://www.deadfire.net)

LiveWire 강좌
LiveWire란?
최초예제/동작원리
실행환경 준비
컴파일 및 실행
SSJS의 기본
     - Function
     - Classes/Objects
     - 사용 Tag
     - SSJS의 처리과정
기본 함수
Client To Server
     - FORM Tag
     - URL
Server To Client
     - FORM Tag
     - Cookie
Session
Client
Project/Server
File
Database
     - Database고려사항
     - Function/예제
기타
     - Stored Procedure
     - 외부함수호출
마치며

Copyright ⓒ 1997 ~, Deadfire Program Master