2012-08-02 20 views
20

Czytałem, że lepiej przechowywać wszystkie swoje pliki JavaScript na dole strony. Szablon szablonu kotła HTML5 wydaje się być zgodny: http://html5boilerplate.com/JavaScript na dole strony?

I wydaje się być szeroko stosowany.

Moje pytanie brzmi: po pierwsze, czy ma to jakieś rzeczywiste podstawy? Zrobiłem testowanie w Firebug i wydaje się, że ma niewielki wpływ, ale czy to jest trywialne? Obrazy i inne źródła nie zaczynają ładować się, dopóki nie załadują się pliki CSS i pliki skryptów, ale przyklejenie ich na dole nie wydaje się w tym zbytnio różnić.

+1

Większość skryptów wymaga załadowania DOM, co nie jest gwarantowane, jeśli masz je na górze strony.Są jednak wyjątki, z jakiegoś powodu modenizer.js musi zostać dodany na górze strony, ponieważ musi zostać wykonany, zanim DOM zostanie w pełni załadowany. Podczas używania gotowego dokumentu jQuery uruchamia się, gdy DOM jest w pełni załadowany, ale przed obrazami. Jednak przy korzystaniu z okna uruchamia się po załadowaniu obrazów. – Nope

+0

Dobre uzasadnienie dla lokalizacji JavaScript na stronie http://robertnyman.com/2008/04/23/where-to-include-javascript-files-in-a-document/. –

Odpowiedz

28

Jest to bardzo ważne z powodów związanych z najlepszymi praktykami.

Po załadowaniu skryptów do nagłówka, uniemożliwiają one pobieranie innych plików! Obejmuje to stylizację, a także zatrzyma pobieranie obrazów do czasu ukończenia skryptu.

Dzieje się tak, ponieważ pliki JavaScript ładują się synchronicznie.

Należy również pamiętać, że podczas wczytywania otrzymasz numer flash of unstyled content (FOUT), jeśli nie przeniesiesz swoich plików JavaScript na dół strony. Dzieje się tak dlatego, że Twój CSS nie zostanie pobrany, dopóki skrypt nie zakończy ładowania.


Oto fragment z Yahoo wydajności reguły 6.

Drugi problem spowodowany przez skrypty blokuje równoległe pobieranie. Specyfikacja HTTP/1.1 sugeruje, że przeglądarki pobierają nie więcej niż dwa komponenty równolegle na nazwę hosta. Jeśli wyświetlasz obrazy z wielu hostów, możesz pobrać więcej niż dwa pobrane równolegle. (Dostałem Internet Explorer, aby pobrać ponad 100 obrazów równolegle.) Podczas gdy skrypt jest pobierany, przeglądarka nie rozpocznie żadnych innych plików do pobrania, nawet na różnych nazwach hostów.


Referencje

http://developer.yahoo.com/performance/rules.html/

Szczególnie pamiętać rule 6.

+1

zobacz także http://pl.wikipedia.org/wiki/Flash_of_unstyled_content – underbar

+0

@underbar Dzięki za heads up, niech to będzie w mojej odpowiedzi – Undefined

+3

Uwaga są wyjątki. Niektóre skrypty wymagają wykonania najpierw i muszą znajdować się na górze strony. Modernizr.js jest jednym z nich. Nie mam pojęcia dlaczego. – Nope

2

Zasadniczo, gdy przeglądarka natrafi na znacznik <script>, przestaje ładować resztę dokumentu, aż do załadowania i wykonania tego <script>.

4

JavaScripts ładują się synchronicznie. Sparuj to z ogólnie większymi rozmiarami plików i masz opóźnione ładowanie treści z powodu synchronicznego ładowania JavaScript. Jeśli umieścisz JavaScript na dole strony, to wszystko inne zostanie wczytane jako pierwsze, a ładowanie JavaScriptem niczego nie zablokuje.

14

Niedawno przeprowadziliśmy tę debatę w biurze. Napisałem a lengthy post, gdzie przedstawiam swoją opinię na ten temat. Krótka odpowiedź brzmi, że to naprawdę zależy od tego, co robisz. W przypadku stron internetowych zorientowanych na treść najlepsze miejsce zajmuje najlepsze miejsce docelowe. Jednak gdy tworzy się aplikacje internetowe, w których najważniejsza jest funkcjonalność, umieszczenie u góry ma swoje zalety.

+5

+1 wszystkie odpowiedzi, blogi i opinie, które widziałem na ten temat, powtarzają te same 3 fakty i koniec. Jesteś pierwszą osobą, która daje prawdziwy świat "zależy od tego, co robisz". Dobra robota. – monsto

Powiązane problemy