자바 스 크 립 트 가 각 브 라 우 저 에서 실행 되 는 내성

IE:500 W 가 넘 는 JScript 엔진 문 구 를 실행 하면 알림 이 나타 납 니 다.Firefox:10 초 이상 실행 하면 알림 이 나타 납 니 다.Safari:5 초 이상 실행 하면 알림 이 나타 납 니 다.Opera:아무리 실행 해도 힌트 가 나타 나 지 않 아 요.가장 인내심 이 있어 요.Chrome:약 8 초 이상 실행 하면 알림 이 나타 납 니 다.주:alert 와 같은 모드 대화 상 자 를 팝 업 할 때 시간 을 계산 하지 않 습 니 다.
웹 개발 을 할 때 자주 발생 하 는 상황 중 하 나 는 브 라 우 저 알림 스 크 립 트 가 너무 오래 실행 되 고 중단 되 거나 계속 되 는 것 입 니 다.무엇 을 선택 하 든 이 대화 상 자 를 사용자 들 과 멀리 할 수 있 도록 최선 을 다 할 것 이 라 고 믿 습 니 다.그러나 이 서로 다른 브 라 우 저 들 이 어떤 스 크 립 트 가'제어 불 능'상태 에 있 는 지 아 십 니까?본 고 는 인터넷 익스플로러,Firefox,Safari,Chrome,Opera 등 다섯 가지 브 라 우 저 에서 이 상황 이 발생 하 는 원인 을 분석 했다.
[원문 제목]What determines that a script is long-running?[원문 작성 자]Nicholas C. Zakas
다음은 원문 에 대한 번역 이다.
웹 개발 자 들 이 자주 만 나 고 제때에 처리 해 야 하 는 문 제 는'스 크 립 트 가 너무 오래 실행 되 었 음 을 알려 주 는 알림 상자'(또는'제어 할 수 없 는 스 크 립 트 알림')입 니 다.이 얄 미 운 대화 상 자 는 스 크 립 트 가 너무 오래 실 행 될 때 나타 납 니 다.웹 개발 자 에 대한 기본 준칙 은 언제든지 사용자 에 게 이 대화 상 자 를 보 여주 지 말 라 는 것 입 니 다.코드 가 구조 화 되 지 않 은 인상 을 줄 수 있 기 때 문 입 니 다.더 쉽게 말 하면 코드 부담 이 너무 큽 니 다.
Brendan Eich(JavaScript 의 발명자)로 말 하면 JavaScript 가 실행 되 는 시간 을 초 로 계산 해 야 한다 면 뭔 가 잘못 되 었 을 것 이다.저 는 개인 적 으로 참 을 수 있 는 상한 선 이 더 작 을 수 있 습 니 다.어떤 스 크 립 트 든 그 어떠한 시간,브 라 우 저 에서 도 100 밀리초 를 초과 해 서 는 안 됩 니 다.실제 실행 시간 이 이 한계 보다 길 면 프로 세 스 를 좀 더 작은 코드 세그먼트 로 분해 해 야 합 니 다.
또한 어떤 이유 로 스 크 립 트 가 서로 다른 브 라 우 저 에서 너무 오래 실행 되 고 나 자신 도 깊이 연구 하지 못 했 는 지 진정 으로 의식 하 는 사람 은 별로 없다.그래서 나 는 앉 아서 우리 가 어떤 상황 에서 그 싫어 하 는 대화 상 자 를 볼 수 있 는 지 잘 연구 하기 로 했다.스 크 립 트 의 제어 불 능 여 부 를 판단 하 는 것 은 두 가지 방법 밖 에 없다.하 나 는 몇 개의 문 구 를 실 행 했 는 지,하 나 는 스 크 립 트 실행 에 걸 린 시간 을 판단 하 는 것 이다.각 브 라 우 저 는 스 크 립 트 가 제어 되 지 않 는 다 고 판단 하 는 구체 적 인 방법 이 약간 다 를 수 있 습 니 다.
Internet Explorer
Internet Explorer 는 스 크 립 트 가 제어 되 지 않 았 는 지 여 부 를 판단 합 니 다.주로 JScript 엔진 실행 문장의 총 수 를 통 해 판단 합 니 다.기본 적 인 상황 에서 이 상한 선 은 500 만 개의 문장 이 고 이 값 은 가능 하 다레 지 스 트 를 통 해 수정 하 다..스 크 립 트 가 이 제한 을 초과 하면 아래 창 을 볼 수 있 습 니 다.
IE Dialog: A script on this page is causing Internet Explorer to run slowly. If it continues to run, your compute may become unresponsive.
이 대화 상 자 는"이 페이지 에 스 크 립 트 가 있어 서 Internet Explorer 가 더 디 게 실 행 됩 니 다.계속 실행 하면 컴퓨터 가 응답 하지 않 는 상태 로 변 할 수 있 습 니 다"라 고 알려 줍 니 다.기술적 정확성 을 추구 하지 않 으 면,이렇게 말 하 는 것 은 확실히 좀 지나치다.대화 상자 에는 스 크 립 트 실행 을 중단 하거나 스 크 립 트 를 계속 실행 할 수 있 도록 두 가지 옵션 이 있 습 니 다.이 대화 상자 가 표시 되 었 을 때 스 크 립 트 가 완전히 중단 되 었 습 니 다.스 크 립 트 를 계속 실행 하려 면 현재 실행 중인 구문 수 를 다시 계산 합 니 다.즉,이 수치 가 다시 상한 선 에 도달 하면 이 대화 상 자 를 다시 볼 수 있 습 니 다.
Firefox
Firefox 는 스 크 립 트 엔진 이 코드 를 지속 적 으로 실행 하 는 시간 에 따라 스 크 립 트 가 제어 되 지 않 는 지 여 부 를 판단 합 니 다.기본 상한 선 은 10 초,가능about:config 페이지 를 통 해 이 값 을 수정 합 니 다.입 니 다.여기 서 주의해 야 할 것 은 alert 와 같은 모드 대화 상 자 를 팝 업 할 때 시간 을 재 지 않 는 다 는 것 이다.브 라 우 저가 스 크 립 트 를 실행 하 는 시간 이 이 상한 선 에 도달 하면 Firefox 는 다음 과 같은 대화 상 자 를 표시 합 니 다.
Firefox Dialog: A script on this page may be busy, or it may have stopped responding. You can stop the script now, open the script in the debugger, or let the script continue.
Firefox 대화 상자 알림:"이 페이지 의 스 크 립 트 가 현재 실행 이 바 쁘 거나 이 스 크 립 트 가 응답 을 멈 추 었 습 니 다.""이 스 크 립 트 를 실행 하지 않 고 디 버 거 에서 이 스 크 립 트 를 열 거나 이 스 크 립 트 를 계속 실행 할 수 있 습 니 다."닥 친 문 제 를 더 분명하게 묘 사 했 고 IE 가 말 하 는 것 만큼 무 섭 지 않 았 다.이 대화 상자 에서 세 가지 작업 을 수행 할 수 있 습 니 다.스 크 립 트 실행 을 중단 하거나 스 크 립 트 를 디 버 깅 하거나 스 크 립 트 를 계속 실행 할 수 있 습 니 다.Internet Explorer 와 마찬가지 로 스 크 립 트 를 계속 실행 하면 스 크 립 트 를 계속 실행 하 는 시간 에 대한 통계 가 초기 화 됩 니 다.디 버 깅 스 크 립 트 단 추 는 Firebug 를 설치 하고 이 페이지 에서 디 버 깅 을 활성화 할 때 만 나타 납 니 다.디 버 깅 스 크 립 트 작업 을 실행 하면 실행 시간 이 너무 긴 코드 세그먼트 의 구체 적 인 위 치 를 표시 할 수 있 습 니 다.
Safari
Safari 역시 스 크 립 트 엔진 이 스 크 립 트 를 지속 적 으로 실행 하 는 시간 에 따라 판단 합 니 다.제 가Webkit 의 소스 코드에 대해 반복 적 으로 연 구 를 한 후에 기본 적 인 시간 초과 시간 이 5 초 라 는 것 을 알 게 되 었 습 니 다.이 상한 선 에 도달 하면 다음 대화 상자 알림 을 드 립 니 다.
Safari Dialog: A script on the page [url] is making Safari unresponsive. Do you want to continue running the script, or stop it?
대화 상자 알림:"페이지 url 에 있 는 스 크 립 트 가 Safari 의 응답 을 잃 게 합 니 다.스 크 립 트 를 계속 실행 하 시 겠 습 니까?스 크 립 트 를 종료 하 시 겠 습 니까?"마찬가지 로 사용자 에 게 도 무 서운 힌트 는 아니다.Safari 에서 가능 합 니 다제어 되 지 않 는 스 크 립 트 검사 기능 닫 기.
Chrome
크롬 은 추적 기술 에 있어 서 약간 교활 하 다.제어 하지 못 하 는 스 크 립 트 검사 기능 은 tab 의 사고 제어(crash control)와 연 결 된 것 같다.나 는 소스 코드 를 자세히 보 았 지만 구체 적 인 제한 을 찾 지 못 했다.그러나 기본적으로 이 제한 은 시간 을 바탕 으로 10 초 정도(5 초 든 10 초 든 Safari 나 Firefox 와 일치 해 야 하 는가)로 추정 된다.크롬 프로젝트 팀 의 친구 에 게 연락 해서 확실한 정 보 를 얻 을 수 있 는 지 확인 하고 있 습 니 다.그럼 에 도 불구 하고 웹 페이지 에 제어 할 수 없 는 스 크 립 트 가 존재 한다 면 사용 자 는 아래 대화 상 자 를 볼 수 있 습 니 다.
Chrome Dialog: The following page(s) have become unresponsive. You can wait for them to become responsive or kill them.
크롬 의 힌트 는 다른 브 라 우 저 에 비해 더 심각 해 보인다."Wait"단 추 를 누 르 면 스 크 립 트 가 계속 실 행 됩 니 다.다음 상한 선 에 도달 할 때 까지"Kill pages"를 누 르 면 메모리 에 있 는 모든 정 보 를 직접 닫 고 빈 페이지 로 대체 할 수 있 습 니 다.
Opera
Opera 의 상황 은 비교적 흥 미 롭 다.그 는 통제 불 능 스 크 립 트 에 대한 제한 이 없 는 것 같다.나 는 몇 개의 긴 테스트 를 실 행 했 고 심지어 몇 분 이 걸 렸 다.이 과정 에서 브 라 우 저 는 정상적으로 응답 할 수 있 었 다.이것 은 나의 예상 밖의 일이 다.나 는 현재 의 상황 에 있어 서 이 방법 이 좋 은 지 나 쁜 지 는 확실 하지 않 지만,적어도 그것 은 효력 이 발생 하지 않 습 니까?
몇 가지 건의
사용자 가 어떤 브 라 우 저 를 사용 하 든 비슷 한 힌트 를 언제든지 볼 수 없습니다.웹 사이트 나 웹 애플 리 케 이 션 이 제품 으로 발표 되 기 전에 일반적인 성능 테스트 를 하 는 것 이 필요 합 니 다.이 방면 에서 많은 도 구 를 이용 할 수 있다.예 를 들 어Firebug's profiler(Firefox 만 지원),YUI Profiler(모든 브 라 우 저 지원)또는Internet Explorer 8's Profiler.100 밀리초 가 넘 는 스 크 립 트 를 주저 하지 않 고 찾 아야 합 니 다.이 스 크 립 트 들 은 일부 브 라 우 저 에서 만 실행 되 지 않 더 라 도 오래 실행 해 야 할 코드 세그먼트 가 포함 되 어 있 습 니 다.이 코드 들 은 성능 검사 도 구 를 통 해 재 평 가 를 해 야 합 니 다.크롬 을 테스트 의 밑줄 로 사용 하지 않도록 하 세 요.크롬 은 자바 스 크 립 트 를 실행 하 는 속도 가 다른 브 라 우 저 보다 한 단계 높 기 때 문 입 니 다(Firefox 3.1 과 최신 웹 키 트 Nightly 와 비슷 합 니 다).인터넷 익스플로러 를 테스트 의 밑줄 로 사용 한 다음 에 다른 브 라 우 저 를 테스트 하 는 것 이 좋 습 니 다.언제든지 IE 의 자바 스 크 립 트 엔진 이 가장 느 리 기 때문에 IE 에서 문 제 를 복구 한 후에 십중팔구 다른 브 라 우 저 에서 도 정상적으로 작 동 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기