브라우저가 단일 스레드이기 때문에 스크립트는 로드 시 다른 리소스의 다운로드를 차단합니다. 현재 브라우저가 개선되었지만 여전히 개선이 필요합니다.
물론 스크립트를 순서대로 실행해야 하지만, 순서대로 다운로드할 필요는 없습니다. 해결 방법:
1. 임베디드 JS
보통 페이지 크기와 캐싱이 더 많은 이점을 가져올 수 있으므로 JS를 외부 파일에 도입하는 것이 좋습니다.
홈페이지나 소량의 JS와 같은 경우에는 허용됩니다.
2. XHR Eval
XMLHttpRequest를 통해 서버 측에서 스크립트를 가져옵니다.
가장 큰 단점은 XHR을 통해 얻은 스크립트를 메인 페이지와 동일한 도메인에 배포해야 한다는 것입니다.
技术
|
并行下载
|
可以跨域
|
存在Script标签
|
忙碌指示 |
顺序保证 |
大小 (bytes) |
XHR Eval |
IE, FF, Saf, Chr, Op |
no |
no |
Saf, Chr |
- |
~500 |
XHR Injection |
IE, FF, Saf, Chr, Op |
no |
yes |
Saf, Chr |
- |
~500 |
Script in Iframe |
IE, FF, Saf, Chr, Op |
no |
no |
IE, FF, Saf, Chr |
- |
~50 |
Script DOM Element |
IE, FF, Saf, Chr, Op |
yes |
yes |
FF, Saf, Chr |
FF, Op |
~200 |
Script Defer |
IE, Saf4, Chr2, FF3.1 |
yes |
yes |
IE, FF, Saf, Chr, Op |
IE, FF, Saf, Chr, Op |
~50 |
document.write Script Tag |
IE, Saf4, Chr2, Op |
yes |
yes |
IE, FF, Saf, Chr, Op |
IE, FF, Saf, Chr, Op |
~100 |