{"id":8010,"date":"2026-07-20T04:30:00","date_gmt":"2026-07-20T09:30:00","guid":{"rendered":"https:\/\/www.wpconsults.com\/?p=8010"},"modified":"2026-07-19T16:13:12","modified_gmt":"2026-07-19T21:13:12","slug":"prufen-ob-das-cdn-daten-zwischenspeichert","status":"publish","type":"post","link":"https:\/\/www.wpconsults.com\/de\/check-if-cdn-is-caching\/","title":{"rendered":"So \u00fcberpr\u00fcfen Sie, ob Ihr CDN Ihre Seiten tats\u00e4chlich zwischenspeichert"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Ihr CDN-Dashboard zeigt ein gr\u00fcnes Licht an, Ihr Geschwindigkeitswert ist gestiegen, also gehen Sie davon aus, dass Ihre Seiten aus dem Cache bereitgestellt werden. Oft ist dies jedoch nicht der Fall, und die \u00dcberpr\u00fcfungstools, die Ihnen mitteilen, dass \u201cIhr CDN funktioniert\u201d, belegen lediglich, dass Ihre Bilder im Cache gespeichert sind \u2013 was aber nie die Frage war.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In dieser Anleitung erfahren Sie, wie Sie \u00fcberpr\u00fcfen k\u00f6nnen, ob Ihr CDN tats\u00e4chlich Ihre Seiten und nicht nur Ihre Assets zwischenspeichert: welcher Header aussagekr\u00e4ftig ist, was die einzelnen Werte bedeuten und was Sie tun k\u00f6nnen, wenn Ihr HTML bei jeder Anfrage unbemerkt an den Ursprungsserver weitergeleitet wird.<\/p>\n\n\n\n<div class=\"wp-block-group wpc-takeaways is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading toc-ignore\">Wichtigste Erkenntnisse<\/h2>\n<ul class=\"wp-block-list\">\n<li>Ein CDN speichert standardm\u00e4\u00dfig Ihre CSS-, JS- und Bilddateien im Cache, nicht jedoch Ihre HTML-Seiten. Daher bedeutet \u201cmy assets HIT\u201d nicht, dass Ihre Seiten im Cache gespeichert sind.<\/li>\n<li>Lesen Sie den Cache-Status-Antwortheader (<code>cf-cache-status<\/code> (auf Cloudflare) auf der Seite selbst, mit <code>curl -I<\/code> oder auf der Registerkarte \u201eNetzwerk\u201c des Browsers: \u201eHIT\u201c bedeutet \u201eCache\u201c, \u201eDYNAMIC\u201c oder \u201eBYPASS\u201c bedeutet, dass die Anfrage an den Ursprungsserver weitergeleitet wurde.<\/li>\n<li>\u201eDYNAMIC\u201c bedeutet, dass das CDN die Seite nie als zwischenspeicherbar eingestuft hat; \u201eBYPASS\u201c bedeutet, dass dies der Fall gewesen w\u00e4re, aber ein Cookie oder ein <code>Cache-Control<\/code> Die Kopfzeile hat das verhindert.<\/li>\n<li>Die <code>Alter<\/code> Dieser Header erscheint nur in einer zwischengespeicherten Antwort und nimmt umso gr\u00f6\u00dfere Werte an, je l\u00e4nger das Objekt im Cache verbleibt; daher ist er der eindeutigste Beweis daf\u00fcr, dass eine Seite tats\u00e4chlich vom Edge-Server bereitgestellt wird.<\/li>\n<li>In einem WooCommerce-Shop muss man auch das Gegenteil \u00fcberpr\u00fcfen: Warenkorb, Kasse und \u201eMein Konto\u201c d\u00fcrfen NICHT zwischengespeichert werden, da sonst die Sitzung eines Kunden an den n\u00e4chsten weitergegeben wird.<\/li>\n<\/ul>\n<\/div>\n\n\n<style>.kb-table-of-content-nav.kb-table-of-content-id3268_6ddb5a-74 .kb-table-of-content-wrap{padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);border-top:1px solid var(--global-palette10, #3182CE);border-right:1px solid var(--global-palette10, #3182CE);border-bottom:1px solid var(--global-palette10, #3182CE);border-left:1px solid var(--global-palette10, #3182CE);border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:15px 15px 0px 0px rgba(160, 152, 255, 0.31);}.kb-table-of-content-nav.kb-table-of-content-id3268_6ddb5a-74 .kb-table-of-contents-title-wrap{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id3268_6ddb5a-74 .kb-table-of-contents-title{font-weight:600;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id3268_6ddb5a-74 .kb-table-of-content-wrap .kb-table-of-content-list{color:var(--global-palette4, #2D3748);font-weight:regular;font-style:normal;margin-top:var(--global-kb-spacing-sm, 1.5rem);margin-right:0px;margin-bottom:0px;margin-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id3268_6ddb5a-74 .kb-table-of-content-wrap .kb-table-of-content-list .kb-table-of-contents__entry:hover{color:var(--global-palette1, #3182CE);}.kb-table-of-content-nav.kb-table-of-content-id3268_6ddb5a-74 .kb-table-of-content-wrap .kb-table-of-content-list .active > .kb-table-of-contents__entry{color:var(--global-palette1, #3182CE);}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id3268_6ddb5a-74 .kb-table-of-content-wrap{border-top:1px solid var(--global-palette10, #3182CE);border-right:1px solid var(--global-palette10, #3182CE);border-bottom:1px solid var(--global-palette10, #3182CE);border-left:1px solid var(--global-palette10, #3182CE);}}@media all and (max-width: 767px){.kb-table-of-content-nav.kb-table-of-content-id3268_6ddb5a-74 .kb-table-of-content-wrap{border-top:1px solid var(--global-palette10, #3182CE);border-right:1px solid var(--global-palette10, #3182CE);border-bottom:1px solid var(--global-palette10, #3182CE);border-left:1px solid var(--global-palette10, #3182CE);}}<\/style>\n\n\n<h2 class=\"wp-block-heading\">So \u00fcberpr\u00fcfen Sie, ob Ihr CDN eine Seite tats\u00e4chlich zwischenspeichert<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Rufen Sie die Seite auf und lesen Sie den Antwort-Header zum Cache-Status. Bei Cloudflare lautet dieser Header <code>cf-cache-status<\/code>: \u201eHIT\u201c bedeutet, dass die Seite aus dem Cache des CDN bereitgestellt wurde, \u201eMISS\u201c oder \u201eEXPIRED\u201c bedeutet, dass diesmal auf Ihren Ursprungsserver zur\u00fcckgegriffen wurde, und \u201eDYNAMIC\u201c oder \u201eBYPASS\u201c bedeutet, dass das CDN die Seite \u00fcberhaupt nicht aus dem Cache bereitgestellt hat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Am schnellsten l\u00e4sst sich das mit einem einzigen Befehl in Ihrem Terminal anzeigen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -sI https:\/\/yoursite.com\/ | grep -i cf-cache-status<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der Name des Headers variiert je nach Anbieter (Fastly verwendet <code>x-cache<\/code>, ein LiteSpeed-Server-Cache verwendet <code>x-litespeed-cache<\/code>, (KeyCDN und andere verwenden ihre eigenen), aber das Prinzip ist dasselbe: Man liest den Cache-Status-Header aus, den der eigene Stack zur\u00fccksendet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hier liegt der Haken \u2013 und genau das ist der Grund, warum es diesen Leitfaden \u00fcberhaupt gibt. Wenn Sie dieselbe \u00dcberpr\u00fcfung bei einem Bild oder einem Stylesheet durchf\u00fchren, wird fast immer \u201eHIT\u201c angezeigt, da CDNs diese standardm\u00e4\u00dfig zwischenspeichern. Dieses Ergebnis sagt jedoch nichts \u00fcber Ihre Seiten aus. Also <strong>Testen Sie die URL der Seite, nicht das Logo.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bevorzugen Sie einen Browser? \u00d6ffnen Sie die Seite, dr\u00fccken Sie F12, wechseln Sie zur Registerkarte \u201eNetzwerk\u201c, laden Sie die Seite neu, klicken Sie dann auf die allererste Anfrage \u2013 das ist das HTML-Dokument selbst \u2013 und lesen Sie <code>cf-cache-status<\/code> unter \u201eResponse Headers\u201c. Achten Sie darauf, dass Sie auf die oberste Dokumentzeile klicken und nicht auf ein Bild oder Skript darunter, sonst m\u00fcssen Sie die Assets erneut \u00fcberpr\u00fcfen.<\/p>\n\n\n\n<figure class=\"wpc-flow\">\n  <p class=\"wpc-flow__title\">Die 30-Sekunden-Cache-Pr\u00fcfung<\/p>\n  <ol class=\"wpc-flow__list\">\n    <li class=\"is-blue\">F\u00fchren Sie den Befehl \u201ecurl -I\u201c mit der URL einer echten Seite aus (kein Bild).<\/li>\n    <li class=\"is-teal\">Den Cache-Status-Header auslesen (cf-cache-status bei Cloudflare)<\/li>\n    <li class=\"is-purple\">\u201eHIT\u201c oder \u201eREVALIDATED\u201c bedeutet, dass die Seite aus dem Cache stammt.<\/li>\n    <li class=\"is-red\">\u201eDYNAMIC\u201c oder \u201eBYPASS\u201c bedeutet, dass es jedes Mal zu Ihrer Quelle weitergeleitet wurde.<\/li>\n    <li class=\"is-green\">\u00dcberpr\u00fcfen Sie dies anhand des \u201eAge\u201c-Headers, der nur in einer zwischengespeicherten Antwort angezeigt wird.<\/li>\n  <\/ol>\n  <figcaption class=\"wpc-flow__cap\">Die gesamte \u00dcberpr\u00fcfung besteht aus einer einzigen Anfrage und einem einzigen Header; alles andere dreht sich darum, zu entscheiden, was der Wert aussagt.<\/figcaption>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Warum Ihre Bilder zwischengespeichert werden, Ihre HTML-Seiten jedoch in der Regel nicht<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ein CDN speichert statische Dateien nach Dateiendung im Cache und l\u00e4sst Ihre HTML-Dateien unber\u00fchrt. In <a href=\"https:\/\/developers.cloudflare.com\/cache\/concepts\/default-cache-behavior\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Mit den Worten von Cloudflare<\/a>, \u201cDas Cloudflare-CDN speichert HTML- oder JSON-Dateien standardm\u00e4\u00dfig nicht im Cache.\u201d Die Standardliste umfasst CSS, JS, JPG, PNG, WEBP, WOFF2, PDF und Dutzende weitere Formate, jedoch nicht <code>.html<\/code> und es gibt keine Regel, die eine Seite bereitstellt, sodass Ihre Seiten an den Ursprungsserver weitergeleitet werden, sofern Sie keine Regel hinzuf\u00fcgen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aus diesem Grund kann ein \u201cCDN-Cache-Checker\u201d einer Website, deren Seiten gar nicht im Cache gespeichert sind, eine positive Bewertung geben. Das Tool ruft eine Datei ab, erkennt einen \u201eHIT\u201c und meldet einen Erfolg. Unterdessen sind Ihre eigentlichen Seiten \u2013 jene langsamen, datenbankgest\u00fctzten Seiten, die Sie eigentlich im Cache haben wollten \u2013, <strong>Besuchen Sie bei jedem Besuch weiterhin Ihren Ursprungsort.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Aufteilung l\u00e4sst sich auf echten Websites erkennen. Hier sind echte Header-Auslesungen, die ich bei drei \u00f6ffentlichen Websites durchgef\u00fchrt habe, die alle \u00fcber Cloudflare laufen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ curl -sI https:\/\/kinsta.com\/ | grep -i cf-cache-status\ncf-cache-status: DYNAMIC\n\n$ curl -sI https:\/\/wpengine.com\/ | grep -i cf-cache-status\ncf-cache-status: DYNAMIC\n\n$ curl -sI https:\/\/yoast.com\/ | grep -iE 'cf-cache-status|age'\ncf-cache-status: HIT\nage: 22<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Zwei davon stellen ihre HTML-Inhalte DYNAMISCH direkt vom Ursprungsserver bereit, und einer speichert sie am Rand mit einem echten, steigenden <code>Alter<\/code>. Gleiches CDN, gegens\u00e4tzliche Ergebnisse \u2013 und die einzige M\u00f6glichkeit herauszufinden, zu welcher Gruppe Ihre Website geh\u00f6rt, besteht darin, den Header Ihrer eigenen Seite zu lesen. (Echte Screenshots, Juli 2026; \u00f6ffentliche Websites, Header sind \u00f6ffentlich einsehbar.)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was die einzelnen Werte von \u201ecf-cache-status\u201c bedeuten und wie man darauf reagieren sollte<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hier sind alle <code>cf-cache-status<\/code> Wert, was Cloudflare damit meint und welche Ma\u00dfnahme daraus folgt. Die Pr\u00fcftools zeigen Ihnen den Wert an; die Spalte \u201eMa\u00dfnahme\u201c wird dabei jedoch ausgelassen.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Wert<\/th><th>Was Cloudflare damit meint<\/th><th>Was kann man dagegen tun?<\/th><\/tr><\/thead><tbody>\n<tr><td><strong>HIT<\/strong><\/td><td>\u201cDie Ressource wurde im Cache von Cloudflare gefunden.\u201d<\/td><td>Funktioniert wie vorgesehen. Bitte \u00fcberpr\u00fcfen Sie, ob der \u201eAge\u201c-Wert steigt, damit es sich um einen echten, dauerhaften Cache handelt.<\/td><\/tr>\n<tr><td><strong>MISS<\/strong><\/td><td>\u201cDie Ressource wurde im Cache von Cloudflare nicht gefunden und wurde vom Ursprungswebserver bereitgestellt.\u201d<\/td><td>Beim ersten Aufruf \u201eNormal\u201c. Neu laden; wenn nie \u201eHIT\u201c angezeigt wird, wird die Seite nicht zwischengespeichert.<\/td><\/tr>\n<tr><td><strong>ABGELAUFEN<\/strong><\/td><td>\u201cDie Ressource wurde im Cache von Cloudflare gefunden, war jedoch abgelaufen und wurde vom Ursprungsserver bereitgestellt.\u201d<\/td><td>In Ma\u00dfen ist das in Ordnung. Die st\u00e4ndige Meldung \u201eEXPIRED\u201c bedeutet, dass Ihre TTL f\u00fcr die Seite zu kurz ist.<\/td><\/tr>\n<tr><td><strong>NEU BEST\u00c4TIGT<\/strong><\/td><td>Die Quelle best\u00e4tigte, dass die zwischengespeicherte Kopie unver\u00e4ndert ist und aus dem Cache bereitgestellt wurde.<\/td><td>Funktioniert. Der Edge-Server hat die \u00dcbereinstimmung mit dem Ursprungsserver \u00fcberpr\u00fcft und die im Cache gespeicherte Seite wiederverwendet.<\/td><\/tr>\n<tr><td><strong>DYNAMISCH<\/strong><\/td><td>\u201cCloudflare betrachtet das Asset nicht als f\u00fcr die Zwischenspeicherung geeignet, und Ihre Cloudflare-Einstellungen weisen Cloudflare nicht ausdr\u00fccklich an, das Asset zwischenzuspeichern.\u201d<\/td><td>Die Standardeinstellung f\u00fcr HTML. F\u00fcgen Sie eine Cache-Regel hinzu, wenn diese Seite zwischengespeichert werden soll.<\/td><\/tr>\n<tr><td><strong>BYPASS<\/strong><\/td><td>Die Quelle wies Cloudflare an, den Cache zu \u00fcberspringen, und zwar \u00fcber <code>Cache-Control<\/code>, oder die Antwort setzt ein Cookie.<\/td><td>Finde das Cookie oder den Header, der die Seite deaktiviert; korrigiere dies f\u00fcr den Warenkorb und die Anmeldung \u2013 es handelt sich um einen Fehler an anderer Stelle.<\/td><\/tr>\n<tr><td><strong>VERALTET<\/strong><\/td><td>Wurde aus dem Cache bereitgestellt, obwohl die G\u00fcltigkeitsdauer abgelaufen war, da Cloudflare den Ursprungsserver nicht erreichen konnte.<\/td><td>\u00dcberpr\u00fcfen Sie den Status Ihres Ursprungsservers; der Edge-Server springt f\u00fcr einen Server ein, der nicht geantwortet hat.<\/td><\/tr>\n<tr><td><strong>AKTUALISIERUNG<\/strong><\/td><td>Die G\u00fcltigkeit ist abgelaufen, wird jedoch aus dem Cache bereitgestellt, w\u00e4hrend die Ursprungsseite sie im Hintergrund aktualisiert.<\/td><td>Unmittelbar nach Ablauf unter Last im Normalzustand. Keine Ma\u00dfnahme erforderlich.<\/td><\/tr>\n<tr><td><strong>KEINE \/ UNBEKANNT<\/strong><\/td><td>Cloudflare hat eine Antwort generiert, die nicht f\u00fcr das Caching in Frage kommt (ein Worker, eine Weiterleitung, eine WAF-Regel).<\/td><td>Die Anfrage wurde beantwortet, bevor sie den Cache erreichte; das ist auf diesen Routen zu erwarten.<\/td><\/tr>\n<\/tbody><\/table><figcaption>Jeder cf-cache-status-Wert ist der jeweiligen Aktion zugeordnet, die er ausl\u00f6st, sodass ein Wert auf Ihrer Seite zu einer Entscheidung wird und nicht nur eine Bezeichnung ist.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ein weiterer Header leistet hier im Hintergrund ganze Arbeit: <code>Alter<\/code>. Cloudflare gibt diesen Wert nur \u201cf\u00fcr aus dem Cache gelieferte Antworten\u201d zur\u00fcck; er gibt die Anzahl der Sekunden an, die das Objekt bereits im Cache gespeichert ist, und wird bei einer L\u00f6schung oder Neuvalidierung zur\u00fcckgesetzt. Ein wachsender <code>Alter<\/code> Das ist der eindeutigste Beweis daf\u00fcr, dass eine Seite tats\u00e4chlich direkt vom Server stammt, und das Fehlen dieser Seite auf einer Seite, von der Sie erwartet h\u00e4tten, dass sie zwischengespeichert ist, ist das eindeutige Anzeichen daf\u00fcr, dass dies nicht der Fall ist.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was \u201ecf-cache-status DYNAMIC\u201c bedeutet und wie es sich von \u201eBYPASS\u201c unterscheidet<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cDYNAMIC\u201d bedeutet, dass das CDN die Seite nie als zwischenspeicherbar eingestuft hat und sie daher von Ihrem Ursprungsserver abgerufen hat. Nach den Angaben von Cloudflare war das Asset \u201enicht f\u00fcr den Cache geeignet\u201c, und Ihre Einstellungen haben dem System nichts anderes mitgeteilt. Dies ist der Standardzustand einer HTML-Seite ohne Cache-Regel, und genau deshalb suchen so viele Menschen danach: Sie haben das CDN aktiviert, auf jeder Seite \u201eDYNAMIC\u201c gesehen und angenommen, dass etwas nicht funktioniert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BYPASS ist eine ganz andere Sache. Cloudflare <em>w\u00fcrde<\/em> hat die Seite zwischengespeichert, aber Ihr Ursprungsserver hat dies ausdr\u00fccklich untersagt, entweder durch einen <code>Cache-Control<\/code> Kopfzeile eingestellt auf <code>no-cache<\/code>, <code>privat<\/code>, oder <code>max-age=0<\/code>, oder weil die Antwort ein Cookie gesetzt hat. Cloudflare speichert keine Antwort im Cache, die ein <code>Set-Cookie<\/code> Kopfzeile, so vorgesehen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der praktische Unterschied entscheidet \u00fcber Ihre L\u00f6sung. <strong>DYNAMIC ist eine Konfigurationsl\u00fccke:<\/strong> Sie haben dem CDN einfach noch nicht mitgeteilt, dass HTML zwischengespeichert werden soll; die L\u00f6sung ist also eine Cache-Regel. <strong>BYPASS ist eine Option auf der Seite, mit der man sich abmelden kann:<\/strong> Die L\u00f6sung besteht darin, das Cookie oder das <code>Cache-Control<\/code> Header-Eintrag sorgt daf\u00fcr. Auf einer normalen Seite ist in der Regel ein verirrtes Session-Cookie die Ursache; auf einer Warenkorb- oder Checkout-Seite ist dieser \u201eBYPASS\u201c-Eintrag korrekt und sollte unver\u00e4ndert bleiben.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">So speichern Sie Ihre HTML-Seiten bei Cloudflare im Cache, ohne dass dabei etwas schiefgeht<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Um HTML zwischenzuspeichern, f\u00fcgen Sie eine Cache-Regel hinzu, die die entsprechenden URLs als \u201cF\u00fcr den Cache geeignet\u201d kennzeichnet (das \u00e4ltere \u00c4quivalent war eine Seitenregel vom Typ \u201cAlles zwischenspeichern\u201d). Der Fehler besteht darin, die Regel blind auf Ihre gesamte Website anzuwenden, da dadurch auch Seiten erfasst werden, die benutzerspezifisch bleiben m\u00fcssen. Beschr\u00e4nken Sie den Geltungsbereich der Regel auf die Seiten, die sicher zwischengespeichert werden k\u00f6nnen, und lassen Sie die pers\u00f6nlichen Seiten au\u00dfen vor \u2013 genau das ist die WooCommerce-Falle, die im n\u00e4chsten Abschnitt behandelt wird.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es ist au\u00dferdem hilfreich, die Standardeinstellungen von Cloudflare zu kennen. Wenn Ihr Ursprungsserver keine <code>Cache-Control<\/code> oder <code>G\u00fcltig bis<\/code> Header: Cloudflare speichert einen 200-, 206- oder 301-Status f\u00fcr 120 Minuten, einen 302- oder 303-Status f\u00fcr 20 Minuten und einen 404- oder 410-Status f\u00fcr nur 3 Minuten im Cache; alles andere wird nicht zwischengespeichert. Ein kurzlebiger Cache auf einer Seite, von der man erwartet h\u00e4tte, dass er bestehen bleibt, ist also oft nur darauf zur\u00fcckzuf\u00fchren, dass der Ursprungsserver nicht antwortet und Cloudflare auf die Standarddauer von zwei Stunden zur\u00fcckgreift.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gut zu wissen: Bei den Tarifen \u201eFree\u201c, \u201ePro\u201c und \u201eBusiness\u201c, die von den meisten WordPress-Betreibern genutzt werden, ber\u00fccksichtigt Cloudflare bereits die <code>Cache-Control<\/code> die von Ihrer Quelle gesendet werden. Wenn Ihre Seiten also nicht zwischengespeichert werden, muss der Header in Ihrem eigenen Stack (oder Ihrem <a href=\"https:\/\/www.wpconsults.com\/de\/cloudflare-veraltet-auto-minify\/\">WordPress-Cache und Optimierungsschicht<\/a>) ausst\u00f6\u00dft, ist der erste Ansatzpunkt, und <code>curl -I<\/code> legt es dir direkt vor die Nase.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Stellen Sie in einem WooCommerce-Shop sicher, dass der Warenkorb und der Bezahlvorgang NICHT zwischengespeichert werden<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In einem Online-Shop \u00fcberpr\u00fcfen Sie zwei gegens\u00e4tzliche Aspekte gleichzeitig: dass normale Seiten im Cache gespeichert werden (HIT) und dass Warenkorb, Kasse und \u201eMein Konto\u201c NICHT im Cache gespeichert werden (BYPASS oder DYNAMIC). Ein Online-Shop, bei dem alles als \u201eHIT\u201c gez\u00e4hlt wird, weist mehr Fehler auf als einer, bei dem nichts als \u201eHIT\u201c gez\u00e4hlt wird, da eine zwischengespeicherte Seite f\u00fcr angemeldete Nutzer den Warenkorb und die Sitzung eines Kunden direkt an den n\u00e4chsten Besucher weitergeben kann.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WooCommerce legt eindeutig fest, welche Seiten dynamisch bleiben m\u00fcssen. Gem\u00e4\u00df dessen <a href=\"https:\/\/developer.woocommerce.com\/docs\/best-practices\/performance\/configuring-caching-plugins\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">eigene Caching-Richtlinien<\/a>, mit Ausnahme von \u201cWarenkorb\u201d, \u201eZur Kasse\u201c und \u201eMein Konto\u201c, da \u201ediese Seiten dynamisch bleiben m\u00fcssen, da sie Informationen anzeigen, die f\u00fcr den jeweiligen Kunden und dessen Warenkorb spezifisch sind\u201c. Die Cookies, die eine pers\u00f6nliche Sitzung kennzeichnen und die Ihr Cache unter keinen Umst\u00e4nden zwischenspeichern darf, sind:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>woocommerce_cart_hash<\/code> und <code>woocommerce_items_in_cart<\/code>, die WooCommerce mitteilen, wenn sich der Inhalt des Warenkorbs \u00e4ndert.<\/li>\n<li><code>wp_woocommerce_session_<\/code>, das jeden Kunden mit seinen Warenkorbdaten in der Datenbank verkn\u00fcpft.<\/li>\n<li><code>woocommerce_recently_viewed<\/code>, das das Widget \u201eZuletzt angesehene Produkte\u201c steuert.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Gute Cache-Plugins \u00fcbernehmen das f\u00fcr Sie: WP Rocket schlie\u00dft diese drei Seiten automatisch aus, sobald es WooCommerce erkennt, und WooCommerce weist WP Super Cache aktiv an, \u201cWarenkorb\u201d, \u201eKasse\u201c und \u201eMein Konto\u201c zu \u00fcberspringen. Eine manuell erstellte \u201eAlles zwischenspeichern\u201c-Regel im CDN ber\u00fccksichtigt dies jedoch nicht \u2013 und genau darin liegt die Gefahr.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die \u00dcberpr\u00fcfung erfolgt \u00fcber denselben Befehl und bezieht sich auf die Seiten, die privat bleiben m\u00fcssen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -sI https:\/\/yourstore.com\/cart\/ | grep -i cf-cache-status<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Auf der Warenkorbseite SOLLTEN Sie \u201eBYPASS\u201c oder \u201eDYNAMIC\u201c sehen. Wenn dort \u201eHIT\u201c steht, sollten Sie sofort Ihre Cache-Regel korrigieren, bevor ein Kunde den Warenkorb eines anderen Kunden zu sehen bekommt. Es ist <strong>der einzige Ort, an dem ein Treffer ein Fehlschlag ist.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was die Kopfzeilen unserer eigenen Website tats\u00e4chlich anzeigen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hier ist ein echter Auszug aus unserer eigenen Website, der einen wichtigen Punkt auf den Punkt bringt. wpconsults.com nutzt Cloudflare \u00fcberhaupt nicht vor seinem HTML; stattdessen wird ein LiteSpeed-Server-Seiten-Cache verwendet, daher lautet der zu beachtende Header <code>x-litespeed-cache<\/code>, nicht <code>cf-cache-status<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ curl -sI https:\/\/www.wpconsults.com\/ | grep -iE 'x-litespeed-cache|server'\nx-litespeed-cache: Treffer\nserver: LiteSpeed<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das <code>Treffer<\/code> bedeutet, dass die Seite aus dem eigenen Seitencache des Servers bereitgestellt wurde, nicht von einem CDN-Edge-Cache, und dieser Unterschied ist wichtig, da die beiden oft miteinander verwechselt werden. Ein CDN-Edge-Cache (Cloudflare) speichert Ihre Seite in Rechenzentren in der N\u00e4he des Besuchers. Ein <a href=\"https:\/\/www.wpconsults.com\/de\/litespeed-cache-esi-einstellungen-erklart\/\">Server-Seiten-Cache<\/a> (LiteSpeed, WP Rocket, WP Super Cache) speichert den gerenderten HTML-Code auf Ihrem eigenen Ursprungsserver, sodass PHP nicht erneut ausgef\u00fchrt wird. Sie k\u00f6nnen eine dieser L\u00f6sungen, beide oder gar keine verwenden, und jede Ebene verf\u00fcgt \u00fcber einen eigenen Status-Header, der ausgelesen werden kann.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unsere Website l\u00e4uft auf einem LiteSpeed-basierten Hosting-Angebot von <a title=\"\" class=\"aalmanual\" target=\"_blank\"  rel=\"nofollow\"   href=\"https:\/\/www.wpconsults.com\/de\/shared-hosting-hostinger\/\">Hostinger<\/a>, weshalb der Seitencache auf dem Server gespeichert ist und es keinen <code>cf-cache-status<\/code> zu finden. Die statischen Assets verhalten sich in beiden F\u00e4llen so, wie man es erwarten w\u00fcrde:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ curl -sI https:\/\/www.wpconsults.com\/wp-content\/...\/style.css | grep -i cache-control\ncache-control: public, max-age=604800<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ein leerger\u00e4umter Sieben-Tage-Browser-Cache f\u00fcr das Stylesheet \u2013 kein Problem. Das ist die \u00fcbliche Aufteilung: Assets sind zwischenspeicherbar und unspektakul\u00e4r, Seiten sind die Ebene, die man tats\u00e4chlich \u00fcberpr\u00fcfen muss.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Warum Ihre Cache-Trefferquote niedriger ist, als Sie erwarten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Selbst wenn das HTML-Caching aktiviert ist, liegt Ihre Cache-Trefferquote \u2013 also der Anteil der Anfragen, die aus dem Cache statt vom Ursprungsserver bedient werden \u2013 in der Regel unter dem im Dashboard angezeigten Gesamtwert. Dieser Wert wird von Assets dominiert, die ohnehin immer einen Treffer erzielen w\u00fcrden, und schmeichelt Ihnen daher. Die Seiten, auf die es ankommt \u2013 die dynamischen \u2013, machen nur einen kleinen Teil aus und sind die ersten, bei denen nach einer Cache-Leerung oder einer Bereitstellung ein \u201eMISS\u201c auftritt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beurteilen Sie das Caching daher anhand der Header-Angaben in Ihren Schablonen f\u00fcr Schl\u00fcsselseiten \u2013 sei es ein Beitrag, eine Kategorie oder eine Sammlung oder die Startseite \u2013 und nicht anhand eines einzigen, f\u00fcr die gesamte Website geltenden Prozentsatzes. Ein hoher Anteil bei DYNAMISCHEN Seiten bedeutet lediglich, dass Ihre Bilder die Hauptlast tragen, w\u00e4hrend Ihre langsamen Seiten weiterhin den Ursprungsserver abfragen. Das ist auch der Grund, warum der Cache-Status in Ihrer <a href=\"https:\/\/www.wpconsults.com\/de\/how-to-pass-core-web-vitals\/\">Core Web Vitals und TTFB<\/a> lange bevor es in einer Gesamtzahl zum Ausdruck kommt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Also, speichert Ihr CDN Ihre Seiten tats\u00e4chlich im Cache?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ehrlich gesagt lautet die Antwort meistens: \u201cNicht so, wie du denkst.\u201d Die gr\u00fcne Ampel und der Geschwindigkeitswert messen deine Ressourcen, und deine Ressourcen waren nie das Problem. Wenn das meine Website w\u00e4re, w\u00fcrde ich mir zwei Minuten Zeit nehmen, um <code>curl -I<\/code> Vergleichen Sie es zun\u00e4chst mit drei echten Seitenvorlagen \u2013 einem Beitrag, einer Kategorie und dem Warenkorb \u2013, bevor Sie einem Dashboard vertrauen, denn die Kopfzeile schmeichelt Ihnen nicht so sehr wie eine Punktzahl.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Konfigurieren Sie das HTML-Caching bewusst, schlie\u00dfen Sie benutzerspezifische Seiten davon aus und \u00fcberpr\u00fcfen Sie die Header-Eintr\u00e4ge jedes Mal erneut, wenn Sie eine Regel oder ein Plugin \u00e4ndern. Ein CDN, das alles zwischenspeichert, ist nicht das Ziel, ebenso wenig wie eines, das gar nichts zwischenspeichert; das Ziel ist es, zu wissen, welche Seiten zwischengespeichert werden, und dabei richtig zu liegen. Die Tools zeigen an, dass das CDN aktiv ist. Nur <strong>Der Antwort-Header zeigt an, dass alles wie vorgesehen funktioniert,<\/strong> und auf einer stark frequentierten Website ist das der Unterschied zwischen <a href=\"https:\/\/www.wpconsults.com\/de\/kann-eine-wordpress-website-1-million-besucher-bewaltigen\/\">einen Verkehrsansturm \u00fcberstehen<\/a> und deinen Ursprung darunter zum Schmelzen zu bringen.<\/p>\n\n\n\n<div class=\"wp-block-group wpc-post-cta is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading\">Du bist dir immer noch nicht sicher, was dir deine Kopfzeilen sagen?<\/h3>\n<p class=\"wp-block-paragraph\">Falls Ihr \u201eCache-Status\u201c-Header einen Wert anzeigt, den Sie sich nicht erkl\u00e4ren k\u00f6nnen, oder Ihre Seiten auf \u201eDYNAMIC\u201c stehen bleiben und Sie nicht wissen, warum, <a href=\"https:\/\/www.wpconsults.com\/de\/arbeit-mit-wpconsults\/\">kontaktieren Sie uns<\/a> oder <a href=\"mailto:abdullah@wpconsults.com\">E-Mail<\/a> und ich werde mir das einmal ansehen. Es lohnt sich, daf\u00fcr zu sorgen, dass deine Seiten aus dem Cache bereitgestellt werden und die falschen Seiten nicht angezeigt werden.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Erfahren Sie, wie Sie \u00fcberpr\u00fcfen k\u00f6nnen, ob Ihr CDN nicht nur Ihre Bilder, sondern auch Ihre Seiten zwischenspeichert: den \u201ecache-status\u201c-Header, die Bedeutung der einzelnen Werte und die L\u00f6sung f\u00fcr den Fall, dass Ihr HTML-Code an den Ursprungsserver weitergeleitet wird.<\/p>","protected":false},"author":1,"featured_media":8012,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_kb_optimizer_status":0,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","rank_math_title":"How to Check If Your CDN Is Caching Your Pages","rank_math_description":"Your CDN dashboard says it works, but is it caching your pages? Learn how to check if your CDN is caching HTML with cf-cache-status, and fix it when it is not.","rank_math_focus_keyword":"check if your CDN is caching","_colophon_preset":"regular","_colophon_fc_on":"0","_colophon_edited_on":"0","_wpc_translation_mode":"keep","_wpc_translation_visited":"2026-07-20 09:34 UTC (backfill)","_wpc_keep_translation":false,"_wpc_lastmod":"","footnotes":""},"categories":[89],"tags":[],"class_list":["post-8010","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-seo"],"_links":{"self":[{"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/posts\/8010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/comments?post=8010"}],"version-history":[{"count":0,"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/posts\/8010\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/media\/8012"}],"wp:attachment":[{"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/media?parent=8010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/categories?post=8010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/tags?post=8010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}