2010-07-20 1 views
0

Ruby on Rails 개발 환경에서 Firefox에서 30 초 후에 페이지가 표시되지만 Internet Explorer 8 (IE 7 호환 모드 사용)에서는 90 초가 걸립니다.IE에서 모든 자바 스크립트 실행을 끝내기 전에 페이지 콘텐츠를 표시하도록하는 방법은 무엇입니까?

추가 조사에 따르면 페이지 속도가 느린 자바 스크립트 여야합니다. 자바 스크립트가 해제되어 있으면 페이지 콘텐츠도 30 초 후에 표시되기 때문입니다.

아마도 7 ~ 8 개의 jQuery 플러그인, Facebook 스크립트 및 Google Analytics 스크립트가 있기 때문에 모든 자바 스크립트 코드를 HTML 파일의 끝으로 이동하는 데 꽤 많은 시간이 걸릴 것입니다. Firefox와 마찬가지로 30 초 후에 내용이 표시되도록), 모든 Javascript 코드를 끝내기 전에 IE가 페이지 내용을 표시하도록하는 방법이 있습니까?

document.write() 진술이 HTML 내에 있어야하는 이유 때문에 IE가 모든 자바 스크립트 코드를 먼저 기다리고 있다고 생각합니다. Firefox 또는 Chrome이이를 기다리지 만 콘텐츠를 즉시 표시합니다. .

(프로덕션 서버의 경우, "partials"(HTML 하위 구성 요소)가 많이 캐시되기 때문에 5 ~ 7 초 후에 페이지가 Firefox에 표시됩니다. IE 8의 경우 너무 오래 걸립니다. 약 40 초 정도입니다.)

PS Javascript가 HTML 전체에 내장 된 이유는 "이미지 회전 장치"가있는 경우 HTML 코드가 HAML 파일에 의해 생성 된 HTML 파일 인 "부분"에 있고 모든 HTML뿐만 아니라 자바 스크립트 코드는 더 나은 캡슐화를 위해 하나의 파일에 자바가 있고 다른 파일에 자바 스크립트가있는 대신이 파일에 있습니다.하지만이 자바 스크립트 코드 블록 모두가 jQuery의 $(document).ready(function() { ... })을 사용한다면 어떻게 될까요? 코드 블록 IE에서 페이지 표시 속도가 느려 집니까?

답변

0

jQuery 플러그인이 DOM이 IE에서 완전히로드되기를 기다리고 있다고 가정하는 것이 안전합니다. 한 가지 해결책은 페이지로드 속도를 높이는 것입니다. 다음과 같은 좋은 방법이 있습니다.

  1. jQuery를 직접 호스팅하지 마십시오. Google 또는 Microsoft CDN에서로드하십시오. 그러면 웹 서버에 연결되는 연결이 하나 줄어 듭니다.
  2. jQuery를 통해 동적으로 내용을로드하십시오. 사실 이후에 다시 연결하기는 어렵지만, 점진적으로 내용을로드하고 페이지로드 속도가 빨라지도록 할 수 있습니다.
  3. 가능하면 페이지 하단에 모든 자바 스크립트를 넣으십시오.
  4. 가능하면 jQuery에서 document.ready에 대한 호출을 제거하십시오.
  5. 이 jQuery 플러그인을 사용하여 지연로드 이미지 : http://www.appelsiini.net/2007/9/lazy-load-images-jquery-plugin 페이지를 처음 표시 할 때 콘텐츠 다운로드가 줄어 듭니다.
  6. 호스팅 된 스크립트 및 이미지 또는 적어도 다른 도메인에 타사 CDN을 사용하십시오. 동일한 도메인에서로드하는 것이 병목입니다.
0

또한 Nissan Fan이 포인트 번호 3에서 말한 내용과 하나의 수정안을 제안합니다. 불필요한 모든 스크립트를 페이지의 맨 아래로 이동하여 jquery만으로 헤드를 남기고 하나 이상의 스크립트를 남깁니다.

LAB.js를 사용하는 것이 좋습니다. 브라우저에서 JS와 다른 페이지 항목을 병렬 처리해야하므로로드 프로세스에서 상당한 시간을 줄일 수 있습니다.

http://labjs.com/