자바스크립트 코드가 실행되면 '실행 Context'라는 것이 생성된다. 이 실행 컨텍스트는 코드가 실행될 환경을 정의해주는데, 페이지가 로드될 때 전역 실행 컨텍스트가 생셩되며 함수가 실행될 때마다 추가 실행 컨텍스트가 생성된다. 즉, 실행 컨텍스트의 스택이 생성이 되는 것이고 가장 상위에 있는 컨텍스스트가 현재 활성인 컨텍스트가 되는 것이다.
  각 실행 컨텍스트는 이와 관련된 휴효 범위 체인(Scope Chain)을 갖는데 이는 식별자 확인(identifier resolution)을 하기 위해 사용한다. 이 일련의 유효 범위 체인에는 해당 실행 컨텍스트에서 사용하는 유효범위 내의 식별자를 정의하는 하나 이상의 변수 객체를 포함한다. 전역 실행 컨텍스트는 자신의 유효 범위 체인에 오로지 한개의 변수 객체를 가지며 이 객체는 자바스크립트에서 사용 가능한 모든 전역변수와 함수들을 정의 한다. 함수가 생성이 되면 그 함수 내부 속성에 해당 실행 컨텍스트의 유효 범위 체인을 포함하도록 지정된다. 나중에 자바스크립트를 실행하면서 함수 내부로 들어가면 활성화 객체가 생성이 되고 this, arguments, 그리고 이름 부여된 인자들과 해당함수의 지역 변수들이 초기화 된다. 이 활성화 객체는 실행 컨텍스트의 유효 범위 체인의 맨 앞에 나오며 그 다음에는 해당 함수 속성에 포함되어 있는 객체들이 나온다.

저작자 표시 비영리 변경 금지
  • 0.1 초 : 사용자 자신이 UI에서 보여주는 개체들을 직접 조작한다고 느낄 수 있는 최대 시간. 예를 ㄷ르면 사용자가 한 테이블에서 한 열(column)을 선택한 그 순간 부터 해당 열이 선택되ㅣ었다는 반응이 화면에 보여질 때까지 시간을 들 수 있다. 한 열을 기준으로 정렬을 한 경우에도 이 정도의 시간만 걸리면 이상적이라고 할 수 있을 것 같다. 이때 사용자는 자신이 직접 테이블의 내용을 정렬하고 있다는 느낌을 갖는다.
  • 1초 : 사용자가 컴퓨터가 작업을 끝낼 때까지 과도하게 기다릴 필요 없이 자연스럽게 명령을 내린다는 느낌을 가질 수 있는 최대 시간. 0.2에서 1.0초 정도 지연되는 경우 사용자는 무언가 오래 걸린다는 것을 인지하게 되며 명령에 대한 결과가 사용자의 동작에 대한 직접적인 결과라기 보다는 컴퓨터가 현재 명령을 처리하기위해 '일'을 하고 있다고 느낀다. 예를 들어 보자. 테이블의 내용을 선택한 열을 기준으로 정렬하는 작업이 0.1초 이내에 완료되지 않는 경우에도 왠만하면 1초 이내에는 완료가 되어야 한다. 그렇지 않으면 사용자는 UI가 굼뜨게 반응을 한다고 느끼게 되고 현재 하고자 하는 작업의 '흐름'이 깨지게 된다. 1초 이상 지연되는 경우에는 현재 작업을 수행하기 위해 컴퓨터가 작업을 하고 있다는 것을 커서의 모양을 바꾸는 등의 방법을 통해 사용자에게 알려주는 것이 좋다.
  • 10초 : 사용자가 현재의 작업에 열중할 수 있는 최대 시간. 10초 이상 소요되는 작업의 경우에는 현재까지 완료된 작업의 비율을 퍼센트로 표시를 해주어야 하며 눈에 잘 띄는 곳에 진행 중인 작업을 중지시킬 수 있는 방법 또한 제공해야 한다. 10초 이상 걸리는 작업이 완료된 후에는 작업하던 UI로 돌아왔을 때 어디에 무엇이 있었는지 다시 훑어봐야 할 것이라는 가정을 하는 것이 좋다. 10초 이상의 지연 시간은 사람이 일하는 도중에 현재 작업하던 일을 잠시 그만 두고 다른 일을 하는 등의 자연스럽게 쉬게 되는 경우에나 인정할 수 있다.

참조 : 초고속 웹사이트 구축(위키북스) 에서
영문 URL : http://www.useit.com/papers/responsetime.html
저작자 표시 비영리 변경 금지
  1. HTTP 요청을 줄여라
  2. 콘텐츠 전송 네트워크를 이용하라
  3. 헤더에 만료 기간을 추가하라
  4. Gzip 컴포넌트
  5. 스타일시트는 위에 넣어라
  6. 스크립트는 아래에 넣어라
  7. CSS Expression을 피하라
  8. 자바스크립트와 CSS를 외부 파일에 넣어라
  9. DNS 조회를 줄여라
  10. 자바스크립트를 최소화하라
  11. 리다이렉트를 피하라
  12. 중복되는 스크립트를 제거하라
  13. ETag를 설정하라
  14. 캐시를 지원하는 Ajax 만들기
저작자 표시 비영리 변경 금지