Funktionsweise der ZwischenspeicherungHow caching works

Dieser Artikel enthält einen Überblick über allgemeine Konzepte zum Zwischenspeichern und darüber, wie das Azure Content Delivery Network (CDN) mithilfe der Zwischenspeicherung die Leistung verbessert.This article provides an overview of general caching concepts and how Azure Content Delivery Network (CDN) uses caching to improve performance. Wenn Sie mehr darüber erfahren möchten, wie Sie das Verhalten beim Zwischenspeichern bei Ihrem CDN-Endpunkt anpassen können, lesen Sie Steuern des Verhaltens beim Zwischenspeichern im Azure Content Delivery Network mit Cacheregeln und Steuern des Azure Content Delivery Network-Zwischenspeicherverhaltens mit Abfragezeichenfolgen.If you’d like to learn about how to customize caching behavior on your CDN endpoint, see Control Azure CDN caching behavior with caching rules and Control Azure CDN caching behavior with query strings.

Einführung zum ZwischenspeichernIntroduction to caching

Unter Zwischenspeichern versteht man das lokale Speichern von Daten, um im Fall einer erneuten Anforderung dieser Daten schneller darauf zugreifen zu können.Caching is the process of storing data locally so that future requests for that data can be accessed more quickly. Bei dem am häufigsten verwendeten Cachetyp, dem Webbrowsercache, speichert ein Webbrowser Kopien von statischen Daten auf einer lokalen Festplatte.In the most common type of caching, web browser caching, a web browser stores copies of static data locally on a local hard drive. Durch das Zwischenspeichern kann der Webbrowser verhindern, dass mehrere Roundtrips zum Server ausgeführt werden, und stattdessen lokal auf diese Daten zugreifen, wodurch Zeit und Ressourcen gespart werden.By using caching, the web browser can avoid making multiple round-trips to the server and instead access the same data locally, thus saving time and resources. Das Zwischenspeichern ist besonders für die lokale Verwaltung kleiner, statischer Daten (z.B. statischen Bildern, CSS-Dateien und JavaScript-Dateien) geeignet.Caching is well-suited for locally managing small, static data such as static images, CSS files, and JavaScript files.

Gleichermaßen wird die Funktion zum Zwischenspeichern von einem Content Delivery Network auf Edgeservern in der Nähe des Benutzers verwendet, um zu vermeiden, dass Anforderungen zum Ursprung zurückkehren, und die Latenzen für Endbenutzer zu verringern.Similarly, caching is used by a content delivery network on edge servers close to the user to avoid requests traveling back to the origin and reducing end-user latency. Im Gegensatz zu einem Webbrowsercache, der nur für einen einzelnen Benutzer verwendet wird, verfügt das CDN über einen freigegebenen Cache.Unlike a web browser cache, which is used only for a single user, the CDN has a shared cache. In einem freigegebenen CDN-Cache kann auf eine von einem Benutzer angeforderte Datei später von anderen Benutzern zugegriffen werden, was die Anzahl der Anforderungen an den Ursprungsserver stark reduziert.In a CDN shared cache, a file that is requested by one user can be accessed later by other users, which greatly decreases the number of requests to the origin server.

Dynamische Ressourcen, die häufig geändert werden oder für einen einzelnen Benutzer eindeutig sind, können nicht zwischengespeichert werden.Dynamic resources that change frequently or are unique to an individual user cannot be cached. Bei diesen Arten von Ressourcen kann zur Verbesserung der Leistung jedoch die DSA-Optimierung (Dynamic Site Acceleration) im Azure Content Delivery Network eingesetzt werden.Those types of resources, however, can take advantage of dynamic site acceleration (DSA) optimization on the Azure Content Delivery Network for performance improvements.

Eine Zwischenspeicherung kann auf mehreren Ebenen zwischen dem Ursprungsserver und dem Endbenutzer erfolgen:Caching can occur at multiple levels between the origin server and the end user:

  • Webserver: Verwendet einen freigegebenen Cache (für mehrere Benutzer).Web server: Uses a shared cache (for multiple users).
  • Content Delivery Network: Verwendet einen freigegebenen Cache (für mehrere Benutzer).Content delivery network: Uses a shared cache (for multiple users).
  • Internetdienstanbieter (ISP): Verwendet einen freigegebenen Cache (für mehrere Benutzer).Internet service provider (ISP): Uses a shared cache (for multiple users).
  • Webbrowser: Verwendet einen privaten Cache (für einen Benutzer).Web browser: Uses a private cache (for one user).

Die einzelnen Caches stellen in der Regel die Aktualität ihrer eigenen Ressourcen sicher und führen eine Überprüfung durch, wenn eine Datei veraltet ist.Each cache typically manages its own resource freshness and performs validation when a file is stale. Dieses Verhalten ist in der HTTP-Zwischenspeicherungsspezifikation RFC 7234 definiert.This behavior is defined in the HTTP caching specification, RFC 7234.

RessourcenaktualitätResource freshness

Da eine zwischengespeicherte Ressource möglicherweise veraltet sein kann (im Vergleich zu der entsprechenden Ressource auf dem Ursprungsserver), ist es wichtig, dass Mechanismen zum Zwischenspeichern kontrollieren, wann der Inhalt aktualisiert wird.Because a cached resource can potentially be out-of-date, or stale (as compared to the corresponding resource on the origin server), it is important for any caching mechanism to control when content is refreshed. Um Zeit und Bandbreitenkapazitäten zu sparen, wird eine zwischengespeicherte Ressource nicht mit der Version auf dem Ursprungsserver abgeglichen, wenn auf diesen zugegriffen wird.To save time and bandwidth consumption, a cached resource is not compared to the version on the origin server every time it is accessed. Solange eine zwischengespeicherte Ressource als aktuell gilt, wird stattdessen davon ausgegangen, dass es sich bei dieser um die neueste Version handelt, und sie wird direkt an den Client gesendet.Instead, as long as a cached resource is considered to be fresh, it is assumed to be the most current version and is sent directly to the client. Eine zwischengespeicherte Ressource gilt als aktuell, wenn diese neuer ist als der durch eine Cacheeinstellung definierte Zeitraum.A cached resource is considered to be fresh when its age is less than the age or period defined by a cache setting. Wenn ein Browser beispielsweise eine Webseite neu lädt, stellt er sicher, dass jede zwischengespeicherte Ressource auf Ihrer Festplatte aktuell ist, und lädt diese.For example, when a browser reloads a web page, it verifies that each cached resource on your hard drive is fresh and loads it. Wenn die Ressource nicht aktuell ist (d.h. veraltet), wird eine aktuelle Kopie vom Server geladen.If the resource is not fresh (stale), an up-to-date copy is loaded from the server.

ÜberprüfenValidation

Wenn eine Ressource als veraltet gilt, wird der Ursprungsserver aufgefordert, diese zu überprüfen, d.h. festzustellen, ob die Daten im Cache noch mit den Daten auf dem Ursprungsserver übereinstimmen.If a resource is considered to be stale, the origin server is asked to validate it, that is, determine whether the data in the cache still matches what’s on the origin server. Wenn die Datei auf dem Ursprungsserver geändert wurde, aktualisiert der Cache die jeweilige Version der Ressource.If the file has been modified on the origin server, the cache updates its version of the resource. Wenn die Ressource aktuell ist, werden die Daten direkt aus dem Cache bereitgestellt, ohne dass dieser vorher überprüft wird.Otherwise, if the resource is fresh, the data is delivered directly from the cache without validating it first.

CDN-CachesCDN caching

Die Zwischenspeicherung ist für die Funktionsweise eines CDN von zentraler Bedeutung, um die Bereitstellung zu beschleunigen und die Auslastung des Ursprungsservers im Hinblick auf statische Ressourcen wie Bilder, Schriften und Videos zu reduzieren.Caching is integral to the way a CDN operates to speed up delivery and reduce origin load for static assets such as images, fonts, and videos. Bei CDN-Caches werden statische Ressourcen selektiv auf strategisch platzierten Servern gespeichert, die sich näher an einem Benutzer befinden und folgende Vorteile bieten:In CDN caching, static resources are selectively stored on strategically placed servers that are more local to a user and offers the following advantages:

  • Da der Großteil des Webdatenverkehrs statisch ist (z.B. Bilder, Schriften und Videos), reduzieren CDN-Caches die Netzwerklatenzen, indem sie Inhalte näher an den Benutzer verlagern und so die Entfernung der Datenübertragung verringern.Because most web traffic is static (for example, images, fonts, and videos), CDN caching reduces network latency by moving content closer to the user, thus reducing the distance that data travels.

  • Durch die Auslagerung von Aufgaben in ein CDN können der Netzwerkdatenverkehr und die Auslastung des Ursprungsservers durch Zwischenspeicherung reduziert werden.By offloading work to a CDN, caching can reduce network traffic and the load on the origin server. Hierdurch werden der Kosten- und Ressourcenaufwand für die Anwendung selbst bei einer großen Benutzeranzahl reduziert.Doing so reduces cost and resource requirements for the application, even when there are large numbers of users.

Ähnlich wie bei der Implementierung der Zwischenspeicherung in einem Webbrowser können Sie durch Senden von Headern mit Cacheanweisungen steuern, wie das Zwischenspeichern in einem CDN durchgeführt wird.Similar to how caching is implemented in a web browser, you can control how caching is performed in a CDN by sending cache-directive headers. Header mit Cacheanweisungen sind HTTP-Header, die üblicherweise vom Ursprungsserver hinzugefügt werden.Cache-directive headers are HTTP headers, which are typically added by the origin server. Obwohl die meisten dieser Header ursprünglich für die Zwischenspeicherung in Clientbrowsern konzipiert wurden, werden sie nun auch von sämtlichen Caches zwischen Server und Browser – also auch von CDNs – verwendet.Although most of these headers were originally designed to address caching in client browsers, they are now also used by all intermediate caches, such as CDNs.

Zum Definieren der Cacheaktualität können zwei Header verwendet werden: Cache-Control und Expires.Two headers can be used to define cache freshness: Cache-Control and Expires. Cache-Control ist neuer und hat gegenüber Expires Vorrang, wenn beide vorhanden sind.Cache-Control is more current and takes precedence over Expires, if both exist. Es gibt auch zwei Arten von Headern, die zur Überprüfung verwendet werden (sogenannte Validierungssteuerelemente): ETag und Last-Modified.There are also two types of headers used for validation (called validators): ETag and Last-Modified. ETag ist neuer und hat gegenüber Last-Modified Vorrang, wenn beide definiert sind.ETag is more current and takes precedence over Last-Modified, if both are defined.

Header mit CacheanweisungenCache-directive headers

Wichtig

Standardmäßig ignoriert ein für die DSA optimierter Azure CDN-Endpunkt Header mit Cacheanweisungen und umgeht die Zwischenspeicherung.By default, an Azure CDN endpoint that is optimized for DSA ignores cache-directive headers and bypasses caching. Für die Profile Azure CDN Standard von Verizon und Azure CDN Standard von Akamai können Sie die Behandlung dieser Header durch einen Azure CDN-Endpunkt anpassen, indem Sie CDN-Cacheregeln verwenden, um die Zwischenspeicherung zu aktivieren.For Azure CDN Standard from Verizon and Azure CDN Standard from Akamai profiles, you can adjust how an Azure CDN endpoint treats these headers by using CDN caching rules to enable caching. Nur bei Azure CDN Premium von Verizon-Profilen verwenden Sie die Regel-Engine, um die Zwischenspeicherung zu aktivieren.For Azure CDN Premium from Verizon profiles only, you use the rules engine to enable caching.

Azure CDN unterstützt die folgenden HTTP-Header mit Cacheanweisungen, die die Cachedauer und die -freigabe definieren.Azure CDN supports the following HTTP cache-directive headers, which define cache duration and cache sharing.

Cache-Control:Cache-Control:

  • Es wurde in HTTP 1.1 eingeführt, um Webpublishern eine größere Kontrolle über ihre Inhalte zu ermöglichen und die Beschränkungen des Expires-Headers zu umgehen.Introduced in HTTP 1.1 to give web publishers more control over their content and to address the limitations of the Expires header.
  • Überschreibt den Expires-Header, wenn beide sowie Cache-Control definiert sind.Overrides the Expires header, if both it and Cache-Control are defined.
  • Wenn das Headerfeld Cache-Control in einer HTTP-Anforderung vom Client an den CDN-PoP verwendet wird, wird es standardmäßig von allen Azure CDN-Profilen ignoriert.When used in an HTTP request from the client to the CDN POP, Cache-Control is ignored by all Azure CDN profiles, by default.
  • Wenn es in einer HTTP-Antwort vom Client an den CDN-PoP verwendet wird, gilt Folgendes:When used in an HTTP response from the client to the CDN POP:
    • Azure CDN Standard/Premium von Verizon und Azure CDN Standard von Microsoft unterstützen alle Cache-Control-Anweisungen.Azure CDN Standard/Premium from Verizon and Azure CDN Standard from Microsoft support all Cache-Control directives.
    • Azure CDN Standard von Akamai unterstützt nur die folgenden Cache-Control-Anweisungen, während alle anderen ignoriert werden:Azure CDN Standard from Akamai supports only the following Cache-Control directives; all others are ignored:
      • max-age: Ein Cache kann den Inhalt für den in Sekunden angegebenen Zeitraum speichern.max-age: A cache can store the content for the number of seconds specified. Beispiel: Cache-Control: max-age=5.For example, Cache-Control: max-age=5. Diese Anweisung gibt den maximalen Zeitraum an, in dem ein Inhalt als aktuell gilt.This directive specifies the maximum amount of time the content is considered to be fresh.
      • no-cache: Der Inhalt wird im Cache gespeichert, aber vor jeder Bereitstellung aus dem Cache überprüft.no-cache: Cache the content, but validate the content every time before delivering it from the cache. Entspricht Cache-Control: max-age=0.Equivalent to Cache-Control: max-age=0.
      • no-store: Der Inhalt wird niemals im Cache gespeichert.no-store: Never cache the content. Entfernen Sie Inhalte, wenn sie zuvor gespeichert wurden.Remove content if it has been previously stored.

Expires:Expires:

  • Die in HTTP 1.0 eingeführten Legacyheader werden zur Bereitstellung von Abwärtskompatibilität unterstützt.Legacy header introduced in HTTP 1.0; supported for backwards compatibility.
  • Verwendet eine datumsbasierte Ablaufzeit mit sekundengenauer Genauigkeit.Uses a date-based expiration time with second precision.
  • Ähnlich wie Cache-Control: max-age.Similar to Cache-Control: max-age.
  • Wird verwendet, wenn Cache-Control nicht vorhanden ist.Used when Cache-Control doesn't exist.

Pragma:Pragma:

  • Wird standardmäßig nicht vom Azure-CDN berücksichtigt.Not honored by Azure CDN, by default.
  • Die in HTTP 1.0 eingeführten Legacyheader werden zur Bereitstellung von Abwärtskompatibilität unterstützt.Legacy header introduced in HTTP 1.0; supported for backwards compatibility.
  • Wird als Clientanforderungsheader mit der folgenden Anweisung verwendet: no-cache.Used as a client request header with the following directive: no-cache. Diese Anweisung weist den Server dazu an, eine neue Version der Ressource zu übermitteln.This directive instructs the server to deliver a fresh version of the resource.
  • Pragma: no-cache entspricht Cache-Control: no-cache.Pragma: no-cache is equivalent to Cache-Control: no-cache.

ValidierungssteuerelementeValidators

Wenn der Cache veraltet ist, werden Validierungssteuerelemente des HTTP-Caches verwendet, um die zwischengespeicherte Version einer Datei mit der Version auf dem Ursprungsserver abzugleichen.When the cache is stale, HTTP cache validators are used to compare the cached version of a file with the version on the origin server. Azure CDN Standard/Premium von Verizon unterstützt standardmäßig sowohl ETag- als auch Last-Modified-Validierungssteuerelemente, wohingegen Azure CDN Standard von Microsoft und Azure CDN Standard von Akamai standardmäßig nur Last-Modified unterstützen.Azure CDN Standard/Premium from Verizon supports both ETag and Last-Modified validators by default, while Azure CDN Standard from Microsoft and Azure CDN Standard from Akamai supports only Last-Modified by default.

ETag:ETag:

  • Azure CDN Standard/Premium von Verizon unterstützt standardmäßig ETag, was bei Azure CDN Standard von Microsoft und Azure CDN Standard von Akamai nicht der Fall ist.Azure CDN Standard/Premium from Verizon supports ETag by default, while Azure CDN Standard from Microsoft and Azure CDN Standard from Akamai do not.
  • ETag definiert eine Zeichenfolge, die für jede Datei und Dateiversion eindeutig ist.ETag defines a string that is unique for every file and version of a file. Beispiel: ETag: "17f0ddd99ed5bbe4edffdd6496d7131f".For example, ETag: "17f0ddd99ed5bbe4edffdd6496d7131f".
  • Es wurde in HTTP 1.1 eingeführt und ist neuer als Last-Modified.Introduced in HTTP 1.1 and is more current than Last-Modified. Ist nützlich, wenn die Ermittelung des Datums der letzten Änderung schwierig ist.Useful when the last modified date is difficult to determine.
  • Unterstützt sowohl eine sichere als auch eine unsichere Überprüfung, wobei das Azure CDN jedoch nur eine sichere Überprüfung unterstützt.Supports both strong validation and weak validation; however, Azure CDN supports only strong validation. Für eine sichere Überprüfung müssen die beiden Ressourcendarstellungen Byte für Byte identisch sein.For strong validation, the two resource representations must be byte-for-byte identical.
  • Ein Cache überprüft eine Datei mit ETag, indem er einen If-None-Match-Header mit einem oder mehreren ETag-Validierungssteuerelementen in der Anforderung sendet.A cache validates a file that uses ETag by sending an If-None-Match header with one or more ETag validators in the request. Beispiel: If-None-Match: "17f0ddd99ed5bbe4edffdd6496d7131f".For example, If-None-Match: "17f0ddd99ed5bbe4edffdd6496d7131f". Wenn die Serverversion mit einem ETag-Validierungssteuerelement in der Liste übereinstimmt, wird der Statuscode 304 (Nicht geändert) in der Antwort gesendet.If the server’s version matches an ETag validator on the list, it sends status code 304 (Not Modified) in its response. Wenn die Version unterschiedlich ist, antwortet der Server mit dem Statuscode 200 (OK) und der aktualisierten Ressource.If the version is different, the server responds with status code 200 (OK) and the updated resource.

Last-Modified:Last-Modified:

  • Nur bei Azure CDN Standard/Premium von Verizon wird Last-Modified verwendet, wenn ETag nicht Teil der HTTP-Antwort ist.For Azure CDN Standard/Premium from Verizon only, Last-Modified is used if ETag is not part of the HTTP response.
  • Gibt das Datum und die Uhrzeit an, an dem der Ursprungsserver festgestellt hat, dass die Ressource zuletzt geändert wurde.Specifies the date and time that the origin server has determined the resource was last modified. Beispiel: Last-Modified: Thu, 19 Oct 2017 09:28:00 GMT.For example, Last-Modified: Thu, 19 Oct 2017 09:28:00 GMT.
  • Ein Cache überprüft eine Datei mit Last-Modified, indem er einen If-Modified-Since-Header mit Datum und Uhrzeit in der Anforderung sendet.A cache validates a file using Last-Modified by sending an If-Modified-Since header with a date and time in the request. Der Ursprungsserver gleicht dieses Datum mit dem Last-Modified-Header der aktuellen Ressource ab.The origin server compares that date with the Last-Modified header of the latest resource. Wenn die Ressource seit dem angegebenen Zeitpunkt nicht geändert wurde, gibt der Server in seiner Antwort den Statuscode 304 (Nicht geändert) zurück.If the resource has not been modified since the specified time, the server returns status code 304 (Not Modified) in its response. Wenn die Ressource geändert wurde, gibt der Server den Statuscode 200 (OK) und die aktualisierte Ressource zurück.If the resource has been modified, the server returns status code 200 (OK) and the updated resource.

Ermitteln der zwischenspeicherbaren DateienDetermining which files can be cached

Nicht alle Ressourcen können zwischengespeichert werden.Not all resources can be cached. Die folgende Tabelle zeigt, welche Ressourcen abhängig von der Art der HTTP-Antwort zwischengespeichert werden können.The following table shows what resources can be cached, based on the type of HTTP response. Mit HTTP-Antworten bereitgestellte Ressourcen, die nicht alle Bedingungen erfüllen, können nicht zwischengespeichert werden.Resources delivered with HTTP responses that don't meet all of these conditions cannot be cached. Nur bei Azure CDN Premium von Verizon können Sie mithilfe der Regel-Engine einige dieser Bedingungen anpassen.For Azure CDN Premium from Verizon only, you can use the rules engine to customize some of these conditions.

Azure CDN von MicrosoftAzure CDN from Microsoft Azure CDN von VerizonAzure CDN from Verizon Azure CDN von AkamaiAzure CDN from Akamai
HTTP-StatuscodesHTTP status codes 200, 203, 206, 300, 301, 410, 416200, 203, 206, 300, 301, 410, 416 200200 200, 203, 300, 301, 302, 401200, 203, 300, 301, 302, 401
HTTP-MethodenHTTP methods GET, HEADGET, HEAD GETGET GETGET
DateigrößenbeschränkungenFile size limits 300 GB300 GB 300 GB300 GB – Optimierung der allgemeinen Webbereitstellung: 1,8 GB- General web delivery optimization: 1.8 GB
– Medienstreaming-Optimierungen: 1,8 GB- Media streaming optimizations: 1.8 GB
– Optimierung großer Dateien: 150 GB- Large file optimization: 150 GB

Damit das Zwischenspeichern von Azure CDN Standard von Microsoft bei einer Ressource funktioniert, muss der Ursprungsserver HEAD- und GET-HTTP-Anforderungen unterstützen, und die Inhaltslängenwerte müssen für alle HEAD- und GET-HTTP-Antworten für die Ressource identisch sein.For Azure CDN Standard from Microsoft caching to work on a resource, the origin server must support any HEAD and GET HTTP requests and the content-length values must be the same for any HEAD and GET HTTP responses for the asset. Bei einer HEAD-Anforderung muss der Ursprungsserver die HEAD-Anforderung unterstützen und mit den gleichen Headern antworten wie beim Empfang einer GET-Anforderung.For a HEAD request, the origin server must support the HEAD request, and must respond with the same headers as if it had received a GET request.

Standardverhalten beim ZwischenspeichernDefault caching behavior

In der folgenden Tabelle wird das Standardverhalten beim Zwischenspeichern bei den Azure CDN-Produkten und deren Optimierungen beschrieben.The following table describes the default caching behavior for the Azure CDN products and their optimizations.

Microsoft: Allgemeine WebbereitstellungMicrosoft: General web delivery Verizon: Allgemeine WebbereitstellungVerizon: General web delivery Verizon: DSAVerizon: DSA Akamai: Allgemeine WebbereitstellungAkamai: General web delivery Akamai: DSAAkamai: DSA Akamai: Download großer DateienAkamai: Large file download Akamai: Allgemeines oder VoD-MedienstreamingAkamai: general or VOD media streaming
Berücksichtigung des UrsprungsHonor origin JaYes JaYes NeinNo JaYes NeinNo JaYes JaYes
CDN-CachedauerCDN cache duration 2 Tage2 days 7 Tage7 days KeineNone 7 Tage7 days KeineNone 1 Tag1 day 1 Jahr1 year

Berücksichtigung des Ursprungs: Gibt an, ob die unterstützten Header mit Cacheanweisungen berücksichtigt werden sollen, wenn sie in der HTTP-Antwort des Ursprungsservers enthalten sind.Honor origin: Specifies whether to honor the supported cache-directive headers if they exist in the HTTP response from the origin server.

CDN-Cachedauer: Gibt den Zeitraum an, in dem eine Ressource im Azure CDN zwischengespeichert wird.CDN cache duration: Specifies the amount of time for which a resource is cached on the Azure CDN. Wenn Berücksichtigung des Ursprungs jedoch auf „Ja“ festgelegt ist und die HTTP-Antwort des Ursprungsservers den Header mit Cacheanweisungen Expires oder Cache-Control: max-age enthält, verwendet das Azure CDN stattdessen den vom Header angegebenen Wert für die Dauer.However, if Honor origin is Yes and the HTTP response from the origin server includes the cache-directive header Expires or Cache-Control: max-age, Azure CDN uses the duration value specified by the header instead.

Nächste SchritteNext steps