2012-01-03 13 views
7

Używałem następującego kodu do ładowania JQuery we wszystkich moich projektach. Złapałem go od http://html5boilerplate.com/. Istnieje obszerne omówienie tej techniki.Używanie kodu Html5boilerplate do wczytania JQuery bardzo powolnym, gdy działa lokalnie

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script>window.jQuery || document.write('<script src="jquery-1.7.1.min.js"><\/script>');</script> 

Ten kod działa świetnie i wydaje cholernie szybkie raz włożyłam go na interwebs, ale kiedy otwieram plik .html lokalnie trwa ~ 10 sekund na odświeżaniu. Generalnie mam dość i zmieniam kod w następujący sposób:

<!-- uncomment when going live 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script>window.jQuery || document.write('<script src="jquery-1.7.1.min.js"><\/script>');</script>--> 

<!-- remove following line when going live --> 
<script src="jquery-1.7.1.min.js"></script> 

Czy brakuje tu czegoś oczywistego? Czuję, że nie powinienem otrzymywać super-wolnego czasu ładowania, ale sam się rozwiązuje, gdy komentuję te linie.

Odpowiedz

11

Zgaduję, że nie jesteś obsługujących HTML poprzez serwer internetowy.

// prefiks adresu URL wskazuje, że powinna ona korzystać z tego samego protokołu co bieżącym zasobu (zazwyczaj http lub https)

Ponieważ nie jesteś służąc przez http i zamiast poprzez plik, to próbuje poszukaj go w lokalnym systemie plików, aby uzyskać limit czasu.

Karta sieciowa na Chrome inspektora pokazuje, że próbuje załadować następujące dla mnie:

file: //ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min. js
file: /// C:/Users/[moja nazwa użytkownika] /Documents/jquery-1.7.1.min.js

to postaram się załadować te czasy i system plików (lub może przeglądarka) zostanie przekroczony limit czasu.

Właściwym sposobem jest służyć za pośrednictwem serwera WWW, albo jeśli jesteś IIS w systemie Windows lub Apache, jeśli jesteś na Linux/Mac (Apache działa również w systemie Windows, IIS, ale ma lepsze narzędzia UI)

+0

Twoje przypuszczenie jest poprawne. –

+0

Przypuszczam, że uruchamianie go za pośrednictwem XAMPP jest rozwiązaniem, którego szukam, wypróbowałem je teraz, ale ckliwa rzecz jakoś się zepsuła ;-) Muszę ją ponownie zainstalować, gdy dostanę szansę. –

+0

@ZachL. jeśli serwujesz plik przez serwer sieciowy, zamiast otwierać plik, powinien działać. – Davy8

1

Linia:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

próbuje znaleźć jQuery w systemie plików, co oznacza, że ​​to zajmie trochę czasu na niepowodzenie. Patrząc na zakładkę Network panelu dewelopera w Google Chrome, próbuje wyszukać plik w file://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js. Następnie, gdy nie uda się znaleźć pliku, ładuje jQuery (i pomyślnie znajduje plik) używając następnej linii:

<script>window.jQuery || document.write('<script src="jquery-1.7.1.min.js"><\/script>');

aby rozwiązać ten problem, należy dodać https: do src swojego tagu skryptu, tak jak poniżej:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

+0

Wygląda na to, że to zadziała, ale to pokona punkt agnostycznego podejścia do protokołu? –

Powiązane problemy