CDN-Leitfaden

Azure Front Door
Azure Storage
Azure Blob Storage

Ein Content Delivery Network (CDN) ist ein verteiltes Netzwerk mit Servern, über die Webinhalte auf effiziente Weise für Benutzer bereitgestellt werden können. In CDNs werden zwischengespeicherte Inhalte auf Edgeservern gespeichert, die sich in der Nähe der Endbenutzer befinden, um die Wartezeit zu verringern.

CDNs werden normalerweise zum Übermitteln statischer Inhalte verwendet, z. B. Bilder, Stylesheets, Dokumente, clientseitige Skripts und HTML-Seiten. Die Hauptvorteile beim Verwenden eines CDN sind kürzere Wartezeit und schnellere Bereitstellung des Inhalts für die Benutzer, und zwar unabhängig von der Entfernung des geografischen Standorts der Benutzer zu dem Datencenter, in dem die Anwendung gehostet wird. CDNs können auch dazu beitragen, die Last für eine Webanwendung zu reduzieren, da die Anwendung keine Dienstanforderungen für die inhalte benötigt, die im CDN gehostet werden.

CDN-Diagramm

In Azure ist Azure Front Door die globale CDN-Lösung für die Bereitstellung von Inhalten mit hoher Bandbreite, die in Azure oder an einem anderen Speicherort gehostet werden. Sie können die Azure Front Door Standard- und Premium-Ebenen konfigurieren, um Inhalte am Netzwerkrand zwischenzuspeichern. Sie können Objekte zwischenspeichern, die aus Azure Blob Storage, einer Webanwendung, einem virtuellen Computer oder sogar einem öffentlich zugänglichen Webserver geladen werden.

In diesem Artikel werden einige allgemeine bewährte Methoden und Überlegungen für die Verwendung eines CDN beschrieben. Weitere Informationen finden Sie in der Dokumentation zum Zwischenspeichern mit Azure Front Door.

Wie und warum ein CDN verwendet wird

Ein CDN wird häufig für Folgendes verwendet:

  • Bereitstellen statischer Ressourcen für Clientanwendungen, häufig von einer Website. Diese Ressourcen können Bilder, Stylesheets, Dokumente, Dateien, clientseitige Skripts, HTML-Seiten, HTML-Fragmente oder andere Inhalte sein, die der Server für jede Anforderung nicht ändern muss. Die Anwendung kann Zur Laufzeit Elemente erstellen und für das CDN verfügbar machen (z. B. durch Erstellen einer Liste der aktuellen Schlagzeilen), aber dies geschieht nicht für jede Anforderung.

  • Bereitstellen von öffentlichen statischen und freigegebenen Inhalten auf Geräten wie Mobiltelefonen und Tablet-PCs. Die Anwendung selbst ist ein Webdienst, der eine API für Clients bietet, die auf verschiedenen Geräten ausgeführt werden. Darüber hinaus kann das CDN statische Datasets (über den Webdienst) zur Verwendung durch die Clients bereitstellen, z. B. zum Generieren der Client-UI. Beispielsweise könnte das CDN zum Verteilen von JSON- oder XML-Dokumenten genutzt werden.

  • Verwaltung vollständiger Websites, die nur aus öffentlichen statischen Inhalten für Clients bestehen, ohne dass dedizierte Compute-Ressourcen erforderlich sind.

  • Streaming von Videodateien an den Client bei Bedarf. Videos profitieren von der niedrigen Latenz und der zuverlässigen Konnektivität aus den Rechenzentren auf der ganzen Welt, die CDN-Verbindungen anbieten.

  • Allgemeines Verbessern der Benutzerfreundlichkeit insbesondere für Benutzer mit großer Entfernung zu dem Datencenter, auf dem die Anwendung gehostet ist. Diese Benutzer können andernfalls eine höhere Latenz erleben. Ein Großteil der Gesamtgröße des Inhalts in einer Webanwendung ist häufig statisch, und das Verwenden des CDN kann dazu beitragen, die Leistung und die allgemeine Benutzerfreundlichkeit aufrechtzuerhalten, ohne dass die Anwendung dafür in mehreren Rechenzentren bereitgestellt werden muss. Eine Liste der Azure Front Door Edge-Standorte finden Sie unter Azure Front Door POP-Standorte nach Region.

  • Unterstützung von IoT-Lösungen (Internet of Things, Internet der Dinge). Die große Anzahl von Geräten und Appliances, die an einer IoT-Lösung beteiligt sind, kann für eine Anwendung schnell zu einer Belastung werden, wenn Firmwareupdates direkt auf jedes Gerät verteilt werden müssen.

  • Bewältigung von Spitzen und zunehmender Nachfrage, ohne die Anwendung zu skalieren und ohne die aus der Skalierung folgenden höheren Betriebskosten hinnehmen zu müssen. Wenn zum Beispiel ein Update für ein Betriebssystem für ein Hardwaregerät wie ein bestimmtes Routermodell oder für ein Verbrauchergerät wie einen Smart-TV veröffentlicht wird, entsteht eine große Nachfrage, da es von Millionen von Benutzern und Geräten in kurzer Zeit bezogen wird.

Herausforderungen

Es gibt verschiedene Herausforderungen, die beim Planen der CDN-Verwendung berücksichtigt werden müssen.

  • Bereitstellung. Entscheiden Sie, wo der Ursprung liegen soll, aus dem das CDN den Inhalt abruft, und ob Sie den Inhalt in mehreren Speichersystemen bereitstellen müssen. Berücksichtigen Sie den Prozess für die Bereitstellung statischer Inhalte und Ressourcen. Beispielsweise müssen Sie möglicherweise einen separaten Schritt implementieren, um Inhalte in Azure Blob Storage zu laden.

  • Versionierung und Cachesteuerung. Überlegen Sie, wie Sie statische Inhalte aktualisieren und neue Versionen bereitstellen. Verstehen Sie, wie das CDN die Zwischenspeicherung und die Gültigkeitsdauer (TTL) durchführt. Informationen zu Azure Front Door finden Sie unter "Zwischenspeichern mit Azure Front Door".

  • Testen. Es kann schwierig sein, lokale Tests Ihrer CDN-Einstellungen durchzuführen, wenn Sie eine Anwendung lokal oder in einer Stagingumgebung entwickeln und testen.

  • Suchmaschinenoptimierung (SEO) . Wenn Sie das CDN verwenden, wird der Inhalt, wie z. B. Bilder und Dokumente, von einer anderen Domäne aus ausgeliefert. Dies kann Auswirkungen auf die Suchmaschinenoptimierung (SEO, Search Engine Optimization) für diesen Inhalt haben.

  • Sicherheit für den Inhalt. Nicht alle CDNs bieten identitätsbasierte Zugriffssteuerung für Inhalte. Azure Front Door WAF schützt Anwendungen vor gängigen Exploits, und die Ursprungssicherheit verhindert, dass Datenverkehr Front Door umgeht. Diese Features ersetzen keine Autorisierung auf Anwendungsebene für private Inhalte. Weitere Informationen finden Sie unter Web Application Firewall in Azure Front Door und Sicherer Datenverkehr zu Azure Front Door-Ursprüngen.

  • Sicherheit für Clients. Clients stellen möglicherweise eine Verbindung aus einer Umgebung her, die den Zugriff auf Ressourcen im CDN nicht zulässt. Dies könnte eine Umgebung mit eingeschränkter Sicherheit sein, in der der Zugriff auf eine Gruppe bekannter Quellen beschränkt ist oder in der das Laden von Ressourcen nur vom Seitenursprung möglich ist. Für solche Fälle ist eine Fallbackimplementierung erforderlich.

  • Resilienz. Das CDN ist eine potenzielle einzelne Fehlerquelle („Single Point of Failure“) für eine Anwendung.

Szenarien, in denen ein CDN möglicherweise weniger nützlich ist:

  • Wenn der Inhalt eine niedrige Trefferrate hat, wird unter Umständen innerhalb des Gültigkeitszeitraums nur wenige Male darauf zugegriffen (bestimmt durch die Einstellung für die Gültigkeitsdauer).

  • Wenn die Daten privat sind, z. B. bei großen Unternehmen oder Lieferketten-Ökosystemen.

Allgemeine Richtlinien und bewährte Verfahren

Die Verwendung eines CDN ist eine gute Möglichkeit, um die Belastung Ihrer Anwendung zu minimieren und die Verfügbarkeit und Leistung zu maximieren. Erwägen Sie den Einsatz dieser Strategie für alle von Ihrer Anwendung genutzten Inhalte und Ressourcen, sofern sie dafür geeignet sind. Berücksichtigen Sie beim Entwerfen Ihrer Strategie zur CDN-Nutzung folgende Punkte.

Bereitstellung

Statische Inhalte müssen möglicherweise unabhängig von der Anwendung eingerichtet und bereitgestellt werden, wenn Sie sie nicht in das Anwendungsbereitstellungspaket oder den Prozess einbeziehen. Überlegen Sie, wie sich dies auf den Versionsverwaltungsansatz auswirkt, den Sie zum Verwalten der Anwendungskomponenten und des statischen Ressourceninhalts verwenden.

Erwägen Sie die Nutzung von Bündelungs- und Minimierungsverfahren, um die Ladezeiten für Clients zu reduzieren. Bei der Bündelung werden mehrere Dateien zu einer einzelnen Datei kombiniert. Bei der Minimierung werden unnötige Zeichen aus Skripts und CSS-Dateien entfernt, ohne dass die Funktionalität geändert wird.

Wenn Sie den Inhalt an einem anderen Speicherort bereitstellen müssen, ist dies ein zusätzlicher Schritt im Bereitstellungsprozess. Wenn die Anwendung den Inhalt für das CDN aktualisiert, z. B. in regelmäßigen Abständen oder als Reaktion auf ein Ereignis, muss der aktualisierte Inhalt an allen anderen Speicherorten sowie am Endpunkt für das CDN gespeichert werden.

Überlegen Sie, wie Sie lokale Entwicklung und Tests behandeln, wenn einige statische Inhalte von einem CDN bereitgestellt werden sollen. Beispielsweise können Sie die Inhalte im Rahmen Ihres Buildskripts vorab im CDN veröffentlichen. Alternativ hierzu können Sie Kompilierungsdirektiven oder Flags verwenden, um zu steuern, wie die Ressourcen von der Anwendung geladen werden. Im Debugmodus kann die Anwendung beispielsweise statische Ressourcen aus einem lokalen Ordner laden. Im Releasemodus nutzt die Anwendung das CDN.

Erwägen Sie die verschiedenen Optionen für die Dateikomprimierung, z. B. GZip (GNU-Zip). Die Komprimierung kann auf dem Ursprungsserver durch die Webanwendung, die dort gehostet wird, oder direkt auf den Edgeservern durch das CDN durchgeführt werden. Weitere Informationen finden Sie unter Verbessern der Leistung durch Komprimieren von Dateien in Azure Front Door.

Routing und Versionierung

Möglicherweise müssen Sie verschiedene Versionen Ihrer Inhalte zu verschiedenen Zeiten bereitstellen. Wenn Sie beispielsweise eine neue Version der Anwendung bereitstellen, können Sie neue Inhalte bereitstellen und den alten Inhalt (in einem älteren Format) für frühere Versionen beibehalten. Wenn Sie Azure Blob Storage als Inhaltsursprung verwenden, können Sie jede Version in einem separaten BLOB-Speichercontainer speichern. Ein Azure Front Door Ursprung identifiziert einen Speicherkontohost, nicht einen einzelnen Container. Wenn Sie Inhalte aus einem anderen Speicherkonto bereitstellen möchten, verweisen Sie den Origin darauf. Wenn Sie Inhalte aus einem anderen Container in demselben Konto bereitstellen möchten, legen Sie den Ursprungspfad der Route fest, oder fügen Sie eine URL-Umschreibungsregel hinzu, die auf den Container ausgerichtet ist.

Das Bereitstellen neuer Versionen von statischen Inhalten beim Aktualisieren einer Anwendung kann eine Herausforderung darstellen, wenn die vorherigen Ressourcen im CDN zwischengespeichert sind. Weitere Informationen finden Sie im folgenden Abschnitt zum Cachesteuerelement.

Erwägen Sie das Einschränken des CDN-Inhaltszugriffs nach Land oder Region. Azure Front Door verwendet die WAF zum Filtern von Anforderungen basierend auf dem Land oder der Region, aus dem eine Anforderung stammt, und schränkt die von ihr übermittelten Inhalte ein. Weitere Informationen finden Sie unter Geofilterung für eine Domäne in Azure Front Door.

Cachesteuerung

Bedenken Sie, wie das Zwischenspeichern innerhalb des Systems verwaltet werden soll. In Azure Front Door können Sie beispielsweise Zwischenspeicherungsregeln im Regelmodul festlegen und benutzerdefiniertes Zwischenspeicherungsverhalten auf bestimmte Routen anwenden. Außerdem können Sie steuern, wie die Zwischenspeicherung in einem CDN durchgeführt wird, indem Sie Header mit Cacheanweisungen am Ursprung senden.

Weitere Informationen finden Sie unter Zwischenspeicherung mit Azure Front Door.

Um zu verhindern, dass Objekte im CDN verfügbar sind, können Sie sie aus dem Ursprung löschen, den CDN-Endpunkt entfernen oder löschen oder für blob-Speicher den Container oder blob-Speicher privat machen. Die Elemente werden jedoch erst nach Ablauf der Gültigkeitsdauer aus dem CDN entfernt. Sie können einen CDN-Endpunkt auch manuell endgültig löschen.

Sicherheit

Azure Front Door können Inhalte über HTTPS übermitteln, indem sie ein Microsoft verwaltetes TLS-Zertifikat oder Ihr eigenes Zertifikat verwenden. Um Browserwarnungen zu gemischten Inhalten zu vermeiden, verwenden Sie HTTPS, um statische Inhalte anzufordern, die in Seiten angezeigt werden, die über HTTPS geladen wurden. Weitere Informationen finden Sie unter End-to-End-TLS mit Azure Front Door.

Wenn Sie statische Objekte, z. B. Schriftdateien, mit dem CDN bereitstellen, können ggf. Probleme aufgrund einer Richtlinie desselben Ursprungs auftreten, falls Sie einen XMLHttpRequest-Aufruf zum Anfordern dieser Ressourcen aus einer anderen Domäne verwenden. Viele Webbrowser verhindern CORS (Cross-Origin Resource Sharing, ursprungsübergreifende Ressourcenfreigabe), sofern der Webserver nicht so konfiguriert wurde, dass die entsprechenden Antwortheader festgelegt werden. Sie können das CDN konfigurieren, um CORS zu unterstützen, indem Sie eine der folgenden Methoden verwenden:

CDN-Fallback

Überlegen Sie, wie Ihre Anwendung mit einem Fehler oder einer temporären Nichtverfügbarkeit des CDN fertig ist. Clientanwendungen können möglicherweise Kopien der Ressourcen verwenden, die während früherer Anforderungen lokal (auf dem Client) zwischengespeichert wurden, oder Sie können Code einfügen, der Fehler erkennt und stattdessen Ressourcen vom Ursprung anfordert (der Anwendungsordner oder Azure Blob Storage-Container, der die Ressourcen enthält) anfordert, wenn das CDN nicht verfügbar ist.