Powiedzmy, że mam dość duży plik JavaScript, spakowany do około 100 KB. Przez plik rozumiem, że jest to plik zewnętrzny, do którego można się połączyć <script src="...">
, a nie wkleić w samym HTML.
Gdzie najlepiej umieścić to w kodzie HTML?
<html>
<head>
<!-- here? -->
<link rel="stylesheet" href="stylez.css" type="text/css" />
<!-- here? -->
</head>
<body>
<!-- here? -->
<p>All the page content ...</p>
<!-- or here? -->
</body>
</html>
Czy będzie jakaś różnica funkcjonalna między każdą z opcji?
javascript
html
optimization
pseudonim
źródło
źródło
Odpowiedzi:
The Yahoo! Zespół wyjątkowej wydajności zaleca umieszczanie skryptów na dole strony ze względu na sposób pobierania składników przez przeglądarki.
Oczywiście komentarz Leviego „tuż przed jego użyciem i nie wcześniej” jest naprawdę poprawną odpowiedzią, tzn. „To zależy”.
źródło
$(function () {...})
również na dole strony, czy też musi on znajdować się w środku<head>
?</body>
?Najlepszym miejscem na to jest tuż przed jego użyciem i nie wcześniej.
Ponadto, w zależności od fizycznej lokalizacji użytkowników, korzystanie z usługi takiej jak usługa Amazon S3 może pomóc użytkownikom pobrać ją z serwera fizycznie bliższego niż serwer.
Czy twój skrypt js jest powszechnie używaną biblioteką, taką jak jQuery lub prototyp? Jeśli tak, istnieje wiele firm, takich jak Google i Yahoo, które dysponują narzędziami do udostępniania tych plików w sieci rozproszonej.
źródło
Zasadniczo najlepszym miejscem do umieszczania
<script>
tagów jest dół strony, tuż przed</body>
tagiem. Coś takiego:Czemu?
CSS
Trochę nie na temat, ale ... Umieść arkusze stylów na górze.
Dalsza lektura
Yahoo wydało naprawdę fajny przewodnik, w którym wymieniono najlepsze praktyki w celu przyspieszenia strony internetowej. Zdecydowanie warto przeczytać: https://developer.yahoo.com/performance/rules.html
źródło
Przy 100k Javascript nie powinieneś nigdy umieszczać go w pliku. Użyj zewnętrznego pliku JavaScript skryptu. W piekle nie ma szans, że użyjesz takiej ilości kodu tylko na jednej stronie HTML. Prawdopodobnie pytasz, gdzie należy załadować plik JavaScript, ponieważ uzyskałeś już zadowalające odpowiedzi.
Chciałbym jednak zauważyć, że często nowoczesne przeglądarki akceptują pliki JavaScript gzip ped! Po prostu skompresuj
x.js
plikx.js.gz
i wskaż go wsrc
atrybucie. Nie działa na lokalnym systemie plików, do działania potrzebny jest serwer WWW. Ale oszczędności w przesyłanych bajtach mogą być ogromne.Z powodzeniem przetestowałem go w Firefox 3, MSIE 7, Opera 9 i Google Chrome. Najwyraźniej nie działa w ten sposób w Safari 3.
Aby uzyskać więcej informacji, zobacz ten post na blogu i kolejną bardzo starą stronę, która mimo wszystko jest przydatna, ponieważ wskazuje, że serwer internetowy może wykryć, czy przeglądarka akceptuje JavaScript spakowany gzipem, czy nie. Jeśli twoja strona serwera może dynamicznie wybrać wysyłanie gzipa lub zwykłego tekstu, możesz sprawić, że strona będzie dostępna we wszystkich przeglądarkach internetowych.
źródło
Umieszczenie javascript na górze wydaje się ładniejsze, ale funkcjonalnie lepiej jest po HTML. W ten sposób JavaScript nie będzie działał i nie będzie próbował odwoływać się do elementów HTML przed ich załadowaniem. Tego rodzaju problem często uwidacznia się dopiero po załadowaniu strony przez rzeczywiste połączenie internetowe, szczególnie powolne.
Możesz także spróbować dynamicznie załadować javascript, dodając element nagłówka z innego kodu javascript, chociaż ma to sens tylko wtedy, gdy nie używasz całego kodu przez cały czas.
źródło
Za pomocą cuzillion możesz przetestować wpływ na ładowanie strony różnych umieszczeń tagów skryptu przy użyciu różnych metod: wbudowany, zewnętrzny, „tagi HTML”, „document.write”, „element JS DOM”, „iframe” i „eval XHR” . Zobacz pomoc w celu wyjaśnienia różnic. Może także testować arkusze stylów, obrazy i ramki iframe.
źródło
Odpowiedź zależy od tego, jak korzystasz z obiektów javascript. Jak już wskazano, ładowanie plików javascript w stopce zamiast w nagłówku z pewnością poprawia wydajność, ale należy zachować ostrożność, aby używane obiekty były inicjowane później niż w stopce. Jeszcze jednym sposobem jest załadowanie plików „js” umieszczonych w folderze, który będzie dostępny dla wszystkich plików.
źródło
Jak powiedzieli inni, najprawdopodobniej powinien znaleźć się w zewnętrznym pliku. Wolę dołączyć takie pliki na końcu <head />. Ta metoda jest bardziej przyjazna dla człowieka niż przyjazna dla maszyny, ale w ten sposób zawsze wiem, gdzie jest JS. Dołączanie plików skryptowych gdzie indziej (imho) nie jest tak czytelne.
Naprawdę musisz wyciskać każde ostatnie ms, więc prawdopodobnie powinieneś zrobić to, co mówi Yahoo.
źródło
Skrypty powinny znajdować się na końcu znacznika body, ponieważ w ten sposób HTML zostanie przeanalizowany przez przeglądarkę i wyświetlony przed załadowaniem skryptów.
źródło
Odpowiedź na pytanie zależy. W tej sytuacji są 2 scenariusze i musisz dokonać wyboru na podstawie odpowiedniego scenariusza.
Scenariusz 1 - Skrypt krytyczny / Wymagany skrypt
Jeśli skrypt, którego używasz, jest ważny do załadowania strony internetowej, zaleca się umieszczenie go u góry dokumentu HTML, tj
<head>
. Niektóre przykłady obejmują - kod aplikacji, bootstrap, czcionki itp.Scenariusz 2 - Mniej ważne / skrypty analityczne
Stosowane są również skrypty, które nie wpływają na widok strony. Takie skrypty zaleca się ładować po załadowaniu wszystkich ważnych segmentów. Odpowiedź na to będzie na dole dokumentu, tj. Na dole twojego
<body>
przed tagiem zamykającym. Niektóre przykłady obejmują - Google Analytics, hotjar itp.Bonus - asynchronizacja / odroczenie
Możesz także powiedzieć przeglądarkom, że ładowanie skryptu może być wykonywane jednocześnie z innymi i może być ładowane na podstawie wyboru przeglądarki za pomocą argumentu defer / async w kodzie skryptu.
na przykład.
<script async src="script.js"></script>
źródło
Twoje linki javascript mogą dostać się do nagłówka lub na końcu tagu ciała, prawdą jest, że wydajność poprawia się poprzez umieszczenie linku na końcu tagu ciała, ale jeśli nie jest to problem, umieszczenie ich w głowie jest ładniejsze dla osób czytających i wiesz, gdzie znajdują się linki i możesz łatwiej do nich odwoływać.
źródło
Powiedziałbym, że to zależy od tego, co planujesz osiągnąć dzięki kodowi JavaScript:
źródło
document.write
, co prawdopodobnie nie powinno być.