2017-09-20 2 views
2

Für eine moderne Website, was ist der beste Weg, um JavaScript-Bibliotheken (in meinem Fall jQuery und D3) zu laden?Referenzieren oder Hosting von Javascript auf HTTP/2

Nehmen wir an:

  • jeder greift auf die Website über HTTP/2
  • Selbst Mittel Hosting auf GitHub-Hosting (dh für bl.ocks)
  • Referenzierung könnte bedeuten:
    • Google für jQuery und cdnjs oder D3.org für D3
    • cdnjs für jQuery und D3
    • cdnjs für jQuery und D3.org für D3

Da jeder HTTP/2 ist, gilt die parallelism argument nicht lange (oder?).

Um die Chance eines Cachetreffers zu maximieren, würde ich annehmen, dass Google die beste Wahl für jQuery ist, aber sie stellen keine D3 bereit, also müsste ich dafür cdnjs oder D3.org verwenden. Hat es einen Vorteil, cdnjs für beide zu verwenden?

EDIT: Lassen Sie mich über das Publikum sagen, dass es global ist, also idealerweise würde eine Lösung gut aus z. Afrika und China. Letzteres ist hier wichtig, da es den Zugriff auf Google-Server blockiert, sodass ein lokaler Fallback erforderlich wäre.

Die Zielgruppe ist auch nicht auf D3-Designer/bl.ocks-Benutzer beschränkt (falls das für die Cache-Trefferchancen relevant wäre).

+1

_Das Argument Parallelität gilt nicht mehr_ richtig, der Hauptvorteil, den Sie erhalten, ist Caching von einem CDN – George

+0

ok, also bedeutet das Google für jQuery und cdnjs für D3 dann? –

+1

Ja, wenn Sie ein CDN verwenden können (Sie müssen sich nicht um Sicherheits-/Firewall-Probleme kümmern), dann verwenden Sie es. – George

Antwort

0

Die Verwendung einer CDN-Version könnte bedeuten, dass sie zwischengespeichert ist, so dass Sie nur eine kleine Kopie davon speichern können. Aber wenn es nicht ist, dann kann es tatsächlich verlangsamen Ihre Website, weil Sie eine Verbindung zur CDN-Site einschließlich einer DNS-Lookup, ein TCP-3-Wege-Handshake, Deal mit TCP Slow Start Bedeutung der Verbindung ist zunächst langsam, tun müssen ein TLS-Setup (vorausgesetzt, es ist über HTTPS) und schließlich die Ressource anfordern. Danach verwenden Sie dieses CDN nie für etwas anderes, so dass alle Setup-Kosten verschwendet werden.

Diese Kosten werden für zwei verschiedene CDNs verdoppelt.

Persönlich, wenn es eine oder zwei Bibliotheken als ich nur selbst Host aus diesem Grund ist. Sogar für HTTP/1.1.

Wenn Sie wirklich Vorteile eines CDN wollen, dann sollten Sie die ganze Seite hinter ein CDN wie Cloudfare stellen und nicht nur ein oder zwei Bibliotheken von einem CDN laden. Und das ist vielleicht keine schlechte Idee für einen globalen Service, wie Sie das sagen.