Mehrere Dateien auf CDN vs. eine Datei lokal

Lesezeit: 4 Minuten

Meine Website verwendet ungefähr 10 JavaScript-Bibliotheken von Drittanbietern wie jQuery, jQuery UI, prefixfree, einige jQuery-Plugins und auch meinen eigenen Javascript-Code. Derzeit ziehe ich die externen Bibliotheken von CDNs wie Google CDN und Cloudflare. Ich habe mich gefragt, was ein besserer Ansatz ist:

  1. Ziehen der externen Bibliotheken aus CDNs (wie ich es heute tue).
  2. Alle Dateien zu einer einzigen JS- und einer einzigen CSS-Datei zusammenfassen und lokal speichern.

Alle Meinungen sind willkommen, solange sie erklärt werden. Vielen Dank 🙂

Benutzer-Avatar
Barney

Der Wert eines CDN liegt in der Wahrscheinlichkeit, dass der Benutzer bereits eine andere Website besucht hat, die dieselbe Datei von diesem CDN aufruft, und wird je nach Größe der Datei immer wertvoller. Die Wahrscheinlichkeit, dass dies der Fall ist, steigt mit der Allgegenwart der angeforderten Datei und der Popularität des CDN.

Vor diesem Hintergrund ist es absolut sinnvoll, eine relativ große und beliebte Datei von einem beliebten CDN abzurufen. jQuery und in geringerem Maße jQuery UI passen in diese Rechnung.

In der Zwischenzeit ist das Verketten von Dateien für kleinere Dateien sinnvoll, die sich wahrscheinlich nicht viel ändern – Ihre häufig verwendeten Plugins werden dieser Rechnung entsprechen, aber Ihr anwendungsspezifischer Kerncode wahrscheinlich nicht: Er kann sich von Woche zu Woche ändern, und wenn Sie Wenn Sie es mit all Ihren anderen Dateien verketten, müssten Sie den Benutzer zwingen, alles noch einmal herunterzuladen.

Die HTML5-Boilerplate macht einen ziemlich guten Job, eine generische Lösung dafür bereitzustellen:

  1. Modernizr wird von lokal im Kopf geladen: Es ist sehr klein und unterscheidet sich von Instanz zu Instanz ziemlich stark, daher macht es keinen Sinn, es von einem CDN zu beziehen, und es wird dem Benutzer nicht zu sehr schaden, es von Ihrem zu laden Server. Es wird in den Kopf gesetzt, weil CSS es möglicherweise verwendet, also möchten Sie, dass seine Effekte bekannt sind, bevor der Körper gerendert wird. Alles andere kommt ganz nach unten, um zu verhindern, dass Ihre schwereren Skripts das Rendern blockieren, während sie geladen und ausgeführt werden.
  2. jQuery aus dem CDN, da es fast jeder verwendet und es ziemlich schwer ist. Der Benutzer hat dies wahrscheinlich bereits zwischengespeichert, bevor er Ihre Website besucht, und lädt es in diesem Fall sofort aus dem Cache.
  3. Alle Ihre kleineren Abhängigkeiten von Drittanbietern und Codeausschnitte, die wahrscheinlich nicht viel ändern, werden zu einer verkettet plugins.js
    Datei von Ihrem eigenen Server geladen. Dies wird beim ersten Besuch des Benutzers mit einem entfernten Ablauf-Header zwischengespeichert und bei späteren Besuchen aus dem Cache geladen.
  4. Ihr Kerncode geht hinein main.js, mit einem engeren Ablauf-Header, um der Tatsache Rechnung zu tragen, dass sich Ihre Anwendungslogik von Woche zu Woche oder Monat zu Monat ändern kann. Auf diese Weise kann, wenn Sie einen Fehler behoben oder neue Funktionen eingeführt haben, wenn der Benutzer ihn in zwei Wochen besucht, dies frisch geladen werden, während der gesamte oben genannte Inhalt aus dem Cache geladen werden kann.

Ihre anderen großen Bibliotheken sollten Sie sich einzeln ansehen und sich fragen, ob sie dem Beispiel von jQuery folgen, einzeln von Ihrem eigenen Server geladen oder verkettet werden sollen. Ein Beispiel dafür, wie Sie zu diesen Entscheidungen kommen könnten:

  • Angular ist unglaublich beliebt und sehr groß. Holen Sie es vom CDN.
  • Twitter Bootstrap ist ähnlich beliebt, aber Sie haben eine relativ kleine Auswahl an Komponenten, und wenn der Benutzer es nicht bereits hat, lohnt es sich möglicherweise nicht, ihn dazu zu bringen, das vollständige Ding herunterzuladen. Allerdings ist die Art und Weise, wie es in den Rest Ihres Codes passt, ziemlich intrinsisch, und Sie werden es wahrscheinlich nicht ändern, ohne die gesamte Site neu zu erstellen – also möchten Sie es vielleicht lokal gehostet lassen, aber seine Dateien von Ihren getrennt halten hauptsächlich plugins.js. Auf diese Weise können Sie Ihre immer aktualisieren plugins.js mit Bootstrap-Erweiterungen, ohne den Benutzer zu zwingen, den gesamten Bootstrap-Kern herunterzuladen.

Aber es gibt keinen Imperativ – Ihr Kilometerstand kann variieren.

  • Sehr gute Antwort. Lassen Sie den Browser-Cache für sich arbeiten. Ich liebe die Idee, die beliebten Bibliotheken von den verketteten Dateien zu trennen.

    – Jon

    10. September 2014 um 11:44 Uhr

  • Sehr hilfreiche Analyse

    – Benutzer

    26. November 2014 um 14:39 Uhr

  • Eine sehr gute Antwort. Erwähnenswert ist auch, dass CDN es Benutzern ermöglicht, die Dateien von einem “lokalen” oder zumindest näheren (am Benutzer) Server abzurufen. Steht Ihr Server also in Europa, kommen Nutzer beispielsweise aus Südamerika oder Russland trotzdem relativ schnell an die Dateien.

    – H. Wolper

    22. Januar 2015 um 8:55 Uhr

1180650cookie-checkMehrere Dateien auf CDN vs. eine Datei lokal

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy