search check home clock-o tag tags chevron-left chevron-right chevron-up chevron-down twitter facebook github rss comment comments terminal code

[jQuery] Jak sobie radzić z dołączaniem biblioteki jQuery, gdy serwer CDN zawiedzie?

[jQuery] Jak sobie radzić z dołączaniem biblioteki jQuery, gdy serwer CDN zawiedzie?

W dzisiejszych czasach biblioteka jQuery stała się niemalże podstawą do rozbudowywania interaktywnej funkcjonalności stron WWW. Można z jej pomocą tworzyć zaawansowane interfejsy użytkownika jak i osiągnąć animacje elementów strony nieodbiegające jakością od animacji Flash.
Problemem może być dołączanie plików biblioteki do kodu strony. Dlaczego? Pliki biblioteki jQuery sporo ważą, dlatego najczęściej się je pobiera bezpośrednio z zewnętrznego serwera CDN (na przykład z Google CDN) celem przyspieszenia ładowania strony. Jak sobie poradzić z sytuacją, gdy plik na serwerze CDN będzie niedostępny?

Jest na to sposób. Możemy za pomocą JS sprawdzić czy plik z serwera zewnętrznego jest dostępny i w przypadku, gdy nie jest dostępny, załączyć plik biblioteki z własnego serwera:

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

Dzięki takiemu zapisowi, będziemy mieć pewność, że biblioteka jQuery zawsze będzie dostępna w czasie dostępności strony WWW, która ją wykorzystuje. W ten sam sposób można dołączać również inne biblioteki: Mootools, Dojo, itd., itp. Oczywiście, biblioteka z serwera lokalnego zostanie wczytana po odświeżeniu strony.

  • Bardzo użyteczne! Przestrzegam przed ładowaniem „zawsze najnowszej wersji” na ślepo, bo często może to prowadzić do unieruchomienia strony. API jQuery zmienia się dość gwałtownie – można było to zobaczyć razem z wersją 1.7, która znacznie różniła się od poprzedniej.
    PS. Powiedziałbym nawet, że jQuery pozwala tworzyć efekty PRZEWYŻSZAJĄCE możliwości Flasha 🙂

  • Piotr Nalepa

    Odnośnie ładowania najnowszej wersji na ślepo, to całkowicie się z Tobą zgadzam. Lecz jeśli ktoś jest świadomy zmian, to nie widzę problemu.

  • Comandeer

    Można jeszcze dopisać, że sposób „ukradziony” z H5BP 😉

  • Piotr Nalepa

    Uznałem, że warto go przedstawić. Nie byłem autorem tego rozwiązania.

  • Lootek

    Polecam lekturę: http://happyworm.com/blog/2010/01/28/a-simple-and-robust-cdn-failover-for-jquery-14-in-one-line/

  • Piotr Nalepa

    dobre uzupełnienie do tego co napisałem 🙂

  • Hmm, a zdarzyła się Ci sytuacja, że plik był niedostępny? W sumie faktycznie lepiej nie ryzykować i można tą dodatkową linijkę kodu dodać;]

  • Piotr Nalepa

    Tak, raz mi się zdarzyła. Kiedyś Google zmieniło na chwilę adresy ścieżek do jQuery.

  • Można zrobić taki failover kaskadowo, tzn. kilka serwerów CDN, a na końcu plik?