Viele große Unternehmen bieten Kopien von jQuery auf ihren CDNs (Content Delivery Networks) an. Am bekanntesten ist Google, aber auch Microsoft und jQuery selbst. Viele schwören darauf, da es Bandbreite spart, schneller lädt und vielleicht sogar zwischen verschiedenen Websites, die dasselbe Skript verwenden, im Cache bleibt.
Es gibt jedoch immer diesen Anflug von Zweifel, dass vielleicht etwas mit den CDNs dieser großen Unternehmen schiefgeht und das Skript nicht verfügbar ist (das passiert). Es ist zuverlässiger, die eigene Website zu verwenden, denn wenn Ihre Webseite geladen wird, dann ist Ihr Server hochgefahren und wird das Skript problemlos bereitstellen, wenn auch ohne die Vorteile des CDNs.
Daher ist vielleicht die beste Lösung, beide Methoden zu verwenden! Verwenden Sie zuerst das CDN und wenn es fehlschlägt, laden Sie die lokale Kopie. Hier ist eine Technik
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
document.write(unescape("%3Cscript src='/js/jquery-1.4.2.min.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
Mann, du hast meine Gedanken gelesen, ich habe heute danach gesucht!
Danke!
Man kann nie zu sicher sein :)
Sehr cool! Ich denke, alle Seiten sollten diese "Lösung" verwenden.
Gute Lösung, Mann! Ich habe danach gesucht :)
Hm... ich hatte immer ein bisschen Sorge im Hinterkopf, dass eine "hotlinked" JS-Datei aus irgendeinem Grund nicht verfügbar wird. Eigene Skripte zu hosten schien immer sicherer. Gute Lösung.
Sie haben die besondere Neigung, wichtige Artikel genau zur richtigen Zeit zu veröffentlichen! Danke.
Wie würden Sie es einrichten, um mehr als ein Backup zu haben? Wenn Sie 3 oder 4 möchten, würden Sie einfach mehr if-Anweisungen verwenden? Ich würde denken, es gibt eine effizientere Möglichkeit zu prüfen, bis eine funktioniert.
Ich glaube, mehr als 1 Backup (wobei die "1" die lokale Kopie ist, die Sie haben) ergibt keinen Sinn.
Es ist viel langsamer, darauf zu warten, dass der Client mehrere Verbindungen aufbaut und fehlschlägt, als einfach zu versuchen, von 1 CDN zu laden und auf lokal zurückzugreifen.
Vielleicht liegt es daran, dass ich am anderen Ende der Welt bin, aber ich habe schon erlebt, dass CDNs langsam laden. Wie lange dauert es, bis die Antwort abläuft und auf lokal umgeschaltet wird? Sollte ich einen Timeout nach ... Millisekunden erzwingen. Wie funktioniert das?
Nebenbei bemerkt, warum nicht einfach
!window.jQuery && document.write('')ups
!window.jQuery && document.write('<script src="js/jquery-1.4.2.min.js"><\/script>')Ich frage mich nur, ob man das Skript von einem zweiten CDN laden kann, wenn das erste fehlschlägt? Zum Beispiel Microsoft als Backup für Google?
Das scheint ziemlich einfach zu sein, aber ich sehe nicht, wo es jemand getan hat.
Das ist sehr hilfreich. Danke für das Sammeln all dieser Informationen, Ihre Arbeit wird sehr geschätzt!
Sie, mein Herr, sind brillant und danke dafür.
Danke, schneller und einfach zu bedienender Code. Werde das auf einigen Bitcoin-Glücksspielseiten verwenden.
Hallo
Ich füge das zur sp2010-Masterseite hinzu. Nur eine Sache: Warum muss ich die XML-Trennzeichen de-escapen? Ist das etwas, das ich regelmäßig tun sollte, wenn ich jQuery verwende?
Daniel
PS: Das ist zweifellos die raffinierteste (verschachtelte) Kommentarfunktion, die ich je gesehen habe!
Meiner Meinung nach könnten Sie mit dem obigen Codebeispiel, wenn das CDN nur langsam ist, aber nicht ausgefallen ist, jQuery unnötigerweise zweimal in das DOM laden.
Hat mir auch geholfen. Vielen Dank!
Einfach, aber genial! Danke
Ich habe eine andere alternative Version dieser JQuery CDN Fallback-Codes gesehen. Ich empfehle die Verwendung von Modernizr-Tools (http://modernizr.com/) und/oder html5boilerplate (http://html5boilerplate.com/). Sie sparen viele Missgeschicke.
Das ist genau das, was ich gesucht habe :D Danke.
Aber wie kann ich das auch mit anderen Skripten machen? Wie dieses hier
http://browser-update.org/update.js
Es scheint nicht mit dem typeof-Ding zu funktionieren, wenn ich statt jQuery update oder browser-update oder so etwas schreibe.
Irgendwelche Ideen? Danke im Voraus. Nochmals vielen Dank für diesen Beitrag.
Mit freundlichen Grüßen
Casper
Ich kann nichts zu den obigen geekigen Aspekten sagen, aber ich habe versehentlich auf den Popup-Kopf unten geklickt…… :-) :-)
Das habe ich nach der Lektüre der "Probleme" des CDNs oben wirklich gebraucht.
Eine der schönsten, cleversten Seiten, die ich seit 1984 gesehen habe – als ich das zweite BBS im fernen Oz startete (mit viel technischer Hilfe – ich lieferte nur das Geld und die Einrichtungen)
Ich gehe davon aus, dass dies KEINE WP-Seite ist? :-)
WOOPS!
Ich habe mir gerade die "Herkunft" dieser Seite angesehen. Noch beeindruckter.
Was ist mit jQuery Mobile?
Und was ist mit jquery-ui?
Ich habe die Idee von **whatdoesitwant** verwendet, die ich eigentlich woanders gefunden habe. Sehr nützlich, besonders wenn ich auf meinem Laptop entwickle und keine Internetverbindung verfügbar ist.
Warum muss es de-escaped werden? Ich bin verwirrt.
Ich habe nach etwas Ähnlichem gesucht. Kann das so verändert werden, dass es prüft, ob eine zwischengespeicherte Version von jQuery von Googles oder Twitters CDN existiert. Wenn ja, diese verwenden und dann, wenn keine zwischengespeicherte Version im Browser des Endbenutzers verfügbar ist, sie stattdessen von unserem Webserver laden?
Grundsätzlich denke ich, dass, wenn der Benutzer die jQuery-Version, die meine Bootstrap-Site für die Funktionalität benötigt, bereits im Browser-Cache hat, diese dann verwendet wird. Aber ich würde es vorziehen, von unserem Server zu laden, wenn es nicht da ist, und es nicht von Google oder Twitter zu laden.