Angesichts dessen
- CDNs sind eine gute Sache, da sie Ressourcen bereitstellen können, die näher am Client liegen, der Client sie zwischenspeichern kann und Sie die Last auf Ihrem eigenen Server reduzieren können.
- In neueren Browsern wird durch das Laden von Ressourcen von Servern von Drittanbietern die Sicherheit dank Subresource Integrity (SRI) nicht beeinträchtigt .
- CDNs sind in einigen Ländern möglicherweise inaktiv oder blockiert und stehen bei der Offline-Entwicklung nicht zur Verfügung 1 .
Ich halte es für zwingend, CDNs zu verwenden, aber auch darauf vorbereitet zu sein, dass sie nicht verfügbar sind. Dieser Blog-Beitrag bietet eine schöne Einführung in verschiedene Ansätze zur Bereitstellung von Fallbacks. Wenn Sie sich das Basic- Beispiel ansehen , werden Sie feststellen, dass es bereits eine Menge Code enthält, der Fallbacks nur für jQuery und Bootstrap bereitstellt, während die bevorzugte Lösung die Verwendung von Fallback.js vorschlägt , die für das vergangene Jahr größtenteils unerreicht zu sein scheint . In ähnlicher Weise handelt es sich bei der relevantesten SO-Frage für das Thema nur um die Bereitstellung eines Fallbacks für jQuery.
In den meisten realen Projekten würde ich jedoch davon ausgehen, dass 5 oder mehr js / css-Ressourcen zur Verfügung stehen. Daher sollte es meiner Meinung nach nicht erforderlich sein, einige fehlerhafte Boilerplates zu wiederholen, um Fallbacks für alle bereitzustellen. Außerdem müssen Sie jedes Mal, wenn Sie eine Ressource hinzufügen oder aktualisieren, dies tun
- Aktualisieren Sie den CDN-Link
- Aktualisieren Sie die lokale Fallback-Kopie durch manuelles Herunterladen oder Ändern der Version in der npm / bower-Konfiguration
- Aktualisieren Sie den Link zum Fallback
- Aktualisieren Sie den SRI-Hash
In der idealen Welt würde ich erwarten, die Ressource in einer Konfigurationsdatei hinzuzufügen / zu aktualisieren und alle anderen Schritte automatisch ausführen zu lassen (und dann Tests durchzuführen, um festzustellen, ob das Update Fehler verursacht hat).
Gibt es dafür bereits einen etablierten Workflow?
Oder sind CDNs und insbesondere SRI noch zu neu?
Oder ist es den meisten Menschen einfach egal, Ersatz für CDN-Ressourcen bereitzustellen?
1. Sie könnten zwar einen Entwickler-Build haben, der sich nicht auf CDNs stützt, aber ich halte das auch für eine Form von Fallback, da er auch gewartet werden muss.
Fallback.js
gewartet, weil es schon einwandfrei funktioniert? Software muss nicht alle 5 Minuten gewechselt werden, wenn sie bereits funktioniert.