Oceniam istniejące zasoby do optymalizacji ładowania skryptów, ale przeczytałem w niektórych artykułach, takich jak this, odnoszą się do starszych przeglądarek zablokować inne pliki do pobrania, aż do zakończenia fazy ładowania skryptów sekwencyjnych. Sprawdzam Modernizr (yepnope.js), headjs i ControlJs jako kandydaci. Ale czy konieczne jest użycie tych narzędzi do ładowania skryptów równoległych w nowoczesnych przeglądarkach?Czy współczesne przeglądarki ładują skrypty równolegle lub sekwencyjnie?
Odpowiedz
wierzę domyślnie większości przeglądarek dzisiaj rzeczywiście załadować skrypty równolegle; ale przeglądarka domyślnie nie wykonuje skryptów równolegle. Na przykład w poniższym kodzie skrypty będą ładowane równolegle. Na obrazku widać, że Fast1.js i Fast2.js ładują się bardzo szybko, ale na podstawie czasu w konsoli przeglądarki Fast2.js wykonuje się 3 sekundy po uruchomieniu Fast1.js.
Należy pamiętać, że kolejność plików może mieć znaczenie. Plik Backbone.js zależy od pliku underscore.js. Jeśli zmieniliśmy kolejność tych plików, gdzie bacbone.js znajduje się przed plikiem underscore.js, zostanie zgłoszony błąd.
<html >
<head>
<title></title>
<script src="scripts/fast1.js" type="text/javascript"></script>
<script src="scripts/libs/jquery-1.8.3.js" type="text/javascript"></script>
<script src="scripts/libs/underscore.js" type="text/javascript"></script>
<script src="scripts/libs/backbone.js" type="text/javascript"></script>
<script src="scripts/fast2.js" type="text/javascript"></script>
</head>
<body>
Hello
<script type="text/javascript">
console.log("html: " + Date());
</script>
<img src="imgs/bImg.png" />
</body>
</html>
Oto kod dla pliku JavaScript Fast1.js i Fast2.js
console.log("Fast 1: " + Date())
dla skryptu załadunku używam Require.js. Zapewnia to także korzyść z organizowania kodu w moduły znajdujące się w poszczególnych plikach.
Oto postu blog tworzę na Browser Script ładowania: Browser Script Loading
Oto kilka artykułów na Script ładowania:
Czy istnieje standard HTML, który zabrania przeglądarce równoczesnego wykonywania pobranego kodu? – Pacerier
Większość przeglądarek ładuje je sekwencyjnie. Jednak istnieje atrybut async
, który można umieścić na znaczniku script
, aby spowodować, że będzie on ładowany inaczej.
MDN wyjaśnia, co znacznik script
robi bardzo dobrze.
https://developer.mozilla.org/en-US/docs/HTML/Element/Script
kolejno, jeśli nie robi cokolwiek ekstra do ładowania plików JavaScript ... –
Hooking https://stackoverflow.com/q/1795438/6 32951 – Pacerier