{"id":31276,"date":"2026-04-27T14:24:00","date_gmt":"2026-04-27T12:24:00","guid":{"rendered":"https:\/\/contabo.com\/blog\/http-304-statuscode-bedeutung-und-wie-du-ihn-behebst\/"},"modified":"2026-06-10T14:17:05","modified_gmt":"2026-06-10T12:17:05","slug":"http-304-statuscode","status":"publish","type":"post","link":"https:\/\/contabo.com\/blog\/de\/http-304-statuscode\/","title":{"rendered":"HTTP-Statuscode 304: Bedeutung und L\u00f6sungen"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"630\" src=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code.webp\" alt=\"HTTP-Statuscode 304: Bedeutung und L\u00f6sungen\" class=\"wp-image-30520\" srcset=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code.webp 1200w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code-600x315.webp 600w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code-768x403.webp 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n\n<p>Eine 304-Antwort bedeutet, dass dein Server dem Browser sagt: Der Inhalt hat sich seit dem letzten Check nicht ge\u00e4ndert, nutz einfach deine Version aus dem Cache. Das ist normalerweise ein Feature, kein Bug. Aber wenn es dazu f\u00fchrt, dass User veraltete Inhalte sehen, wird es zu einem Problem, das du beheben musst.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-was-ist-der-304-statuscode\">Was ist der 304-Statuscode?<\/h2>\n\n\n\n<p>HTTP 304 Not Modified ist ein Antwortcode aus der Redirect-Klasse, der dem Client sagt, dass seine zwischengespeicherte Version einer Ressource noch g\u00fcltig ist. Der Server schickt bei einer 304-Antwort keinen Body mit, sondern nur Header \u2013 das sorgt f\u00fcr schnellere Ladezeiten und spart Bandbreite.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-304-not-modified-so-funktioniert-es\">304 Not Modified: So funktioniert es<\/h3>\n\n\n\n<p>Der Ablauf sieht so aus: Ein Browser fragt eine Ressource an und der Server antwortet mit dem Content plus Caching-Headern. Beim n\u00e4chsten Besuch schickt der Browser eine bedingte Anfrage (If-Modified-Since oder If-None-Match) und fragt nach, ob sich der Inhalt ge\u00e4ndert hat. Wenn sich nichts ge\u00e4ndert hat, antwortet der Server mit 304 und der Browser nutzt seinen lokalen Cache. Es wird kein Inhalt \u00fcbertragen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-304-vs-200-wo-ist-der-unterschied\">304 vs. 200: Wo ist der Unterschied?<\/h3>\n\n\n\n<p>Eine 200-Antwort schickt die komplette Ressource. Eine 304-Antwort schickt nichts au\u00dfer den Headern, die best\u00e4tigen, dass die Cache-Version noch aktuell ist. Aus User-Sicht f\u00fchren beide dazu, dass die Seite l\u00e4dt. Der Unterschied liegt im Speed und in der Bandbreite. Eine 304-Antwort f\u00fcr ein 500KB gro\u00dfes Bild spart also 500KB an Datentransfer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-ist-304-ein-fehler-wann-es-zum-problem-wird\">Ist 304 ein Fehler? Wann es zum Problem wird<\/h3>\n\n\n\n<p>304 ist kein Fehler. Alles l\u00e4uft genau wie geplant. Es wird erst zum Problem, wenn du Content auf dem Server aktualisierst, die User aber die alte Version sehen, weil ihre Browser noch nicht abgelaufene Kopien aus dem Cache laden. Genau dann musst du eingreifen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-wie-http-caching-eine-304-antwort-auslost\">Wie HTTP-Caching eine 304-Antwort ausl\u00f6st<\/h2>\n\n\n\n<p>Zwei Mechanismen steuern, ob ein Server bei wiederholten Anfragen 304 oder 200 zur\u00fcckgibt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-der-etag-header\">Der ETag-Header<\/h3>\n\n\n\n<p>ETags sind eindeutige IDs, die der Server f\u00fcr jede Version einer Ressource generiert. Der Server schickt ETag: &#8222;abc123&#8220; mit der ersten Antwort mit. Bei den n\u00e4chsten Anfragen schickt der Browser If-None-Match: &#8222;abc123&#8220;. Wenn der aktuelle ETag des Servers \u00fcbereinstimmt, antwortet er mit 304. Falls nicht, schickt er eine 200 mit dem neuen Content und einem neuen ETag.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-der-last-modified-header\">Der Last-Modified-Header<\/h3>\n\n\n\n<p>Der Last-Modified-Header sagt dem Browser, wann eine Ressource das letzte Mal ge\u00e4ndert wurde. Bei den folgenden Anfragen schickt der Browser &#8222;If-Modified-Since&#8220; mit genau diesem Datum. Wurde die Ressource seitdem nicht mehr angefasst, antwortet der Server mit 304.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cache-control-und-seine-rolle\">Cache-Control und seine Rolle<\/h3>\n\n\n\n<p>Cache-Control-Header legen fest, wie lange Ressourcen gecacht werden sollen, bevor der Browser \u00fcberhaupt eine bedingte Anfrage stellt. &#8222;Cache-Control: max-age=3600&#8220; hei\u00dft, dass der Browser die Ressource f\u00fcr 3600 Sekunden nicht nochmal anfragt. Erst wenn diese Zeit abgelaufen ist, schickt er die Anfrage (If-Modified-Since \/ If-None-Match), die ein 304 ausl\u00f6sen kann.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-so-behebst-du-den-304-statuscode\">So behebst du den 304-Statuscode<\/h2>\n\n\n\n<p>Wenn 304-Antworten f\u00fcr Probleme mit veralteten Inhalten sorgen, gibt es f\u00fcnf L\u00f6sungswege.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-1-leere-deinen-browser-cache\">1. Leere deinen Browser-Cache<\/h3>\n\n\n\n<p>Der schnellste Fix, wenn ein einzelner User veraltete Inhalte sieht: Browser-Cache leeren. In Chrome: Geh in die Einstellungen &#8211; Datenschutz und Sicherheit &#8211; Browserdaten l\u00f6schen &#8211; w\u00e4hl &#8222;Zwischengespeicherte Bilder und Dateien&#8220; und klick auf &#8222;Daten l\u00f6schen&#8220;. In Firefox: Geh in die Einstellungen &#8211; Datenschutz und Sicherheit &#8211; Daten l\u00f6schen (unter Cookies und Website-Daten).<\/p>\n\n\n\n<p>Das zwingt den Browser, beim n\u00e4chsten Besuch frischen Content anzufragen und den 304-Zyklus zu umgehen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-2-deaktiviere-das-browser-caching-beim-debuggen\">2. Deaktiviere das Browser-Caching beim Debuggen<\/h3>\n\n\n\n<p>Nutz w\u00e4hrend der Entwicklung die Dev-Tools deines Browsers, um das Caching zu deaktivieren. In den Chrome DevTools: \u00d6ffne den Netzwerk-Tab und setz den Haken bei &#8222;Disable Cache&#8220;. Das zwingt jede Anfrage zu einer frischen 200-Antwort und macht es leicht zu checken, ob Content-Updates auch wirklich im Browser ankommen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-3-cache-control-header-serverseitig-anpassen\">3. Cache-Control-Header serverseitig anpassen<\/h3>\n\n\n\n<p>Um Browser zu zwingen, gecachten Content \u00f6fter zu validieren, musst du den &#8222;max-age&#8220;-Wert verringern. In nginx:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>location ~* \\.(css|js)$ { &nbsp; &nbsp; add_header Cache-Control \"public, max-age=300\"; }<\/code><\/pre>\n\n\n\n<p>Ein k\u00fcrzerer &#8222;max-age&#8220;-Wert bedeutet, dass Browser h\u00e4ufiger nach Aktualisierungen fragen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-4-eine-frische-antwort-mit-no-cache-erzwingen\">4. Eine frische Antwort mit &#8222;no-cache&#8220; erzwingen<\/h3>\n\n\n\n<p>Die &#8222;no-cache&#8220;-Direktive verhindert das Caching nicht. Sie zwingt den Browser aber dazu, bei jeder Anfrage beim Server nachzufragen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_header Cache-Control \"no-cache\";<\/code><\/pre>\n\n\n\n<p>Das hei\u00dft, jeder Seitenaufruf l\u00f6st eine bedingte Anfrage aus. Hat sich am Content nichts ge\u00e4ndert, gibt der Server weiterhin 304 zur\u00fcck. Wenn sich was ge\u00e4ndert hat, kommt eine 200 mit frischem Content zur\u00fcck. User sehen so immer den aktuellen Content, ohne unver\u00e4nderte Ressourcen st\u00e4ndig neu laden zu m\u00fcssen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-5-proxy-und-cdn-caching-layer-checken\">5. Proxy- und CDN-Caching-Layer checken<\/h3>\n\n\n\n<p>Wenn du ein CDN oder einen Reverse-Proxy nutzt, k\u00f6nnten die 304-Antworten von dort kommen statt direkt von deinem Origin-Server. Check deine CDN-Konfiguration auf Cache-TTL-Einstellungen und such in den Antworten nach Headern wie &#8222;X-Cache: HIT&#8220;. Wenn ein CDN veralteten Content liefert, muss dessen Cache geleert werden &#8222;purged&#8220; \u2013 da reicht es nicht, nur den Browser-Cache zu l\u00f6schen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-304-statuscode-und-seo\">304-Statuscode und SEO<\/h2>\n\n\n\n<p>304-Antworten sind im Allgemeinen SEO-neutral. Suchmaschinen-Crawler respektieren HTTP-Caching. Eine 304-Antwort sagt dem Googlebot: Der Seiteninhalt ist seit dem letzten Crawl unver\u00e4ndert. Der Crawler nutzt dann seine eigene Cache-Version, was ziemlich effizient ist. Probleme gibt es nur, wenn dein Server 304 zur\u00fcckgibt, obwohl sich der Content ge\u00e4ndert hat \u2013 dann verpassen die Crawler deine Updates. Halt deine ETags und Last-Modified-Header also immer aktuell.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-faq-http-304-statuscode\">FAQ: HTTP 304-Statuscode<\/h2>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1777033592897\"><strong class=\"schema-faq-question\">Was bedeutet 304 Not Modified?<\/strong> <p class=\"schema-faq-answer\">Der Server best\u00e4tigt, dass die Ressource im Browser-Cache noch aktuell ist. Es wird kein Inhalt \u00fcbertragen. Der Browser l\u00e4dt die Seite aus seinem lokalen Cache. Das ist ein Performance-Feature, kein Fehler.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1777033602531\"><strong class=\"schema-faq-question\">Ist ein 304-Statuscode schlecht f\u00fcr SEO?<\/strong> <p class=\"schema-faq-answer\">Nein. Suchmaschinen-Crawler kommen mit 304-Antworten super klar und nutzen ihre gecachte Version der Seite. Es wird nur zum Problem, wenn dein Caching falsch konfiguriert ist und Crawler veraltete 304-Antworten bekommen, obwohl sich der Inhalt ge\u00e4ndert hat.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1777033610667\"><strong class=\"schema-faq-question\">Wie sorge ich daf\u00fcr, dass keine 304-Antworten mehr kommen?<\/strong> <p class=\"schema-faq-answer\">Setz &#8222;Cache-Control: no-store&#8220; f\u00fcr die betroffenen Ressourcen, um Caching komplett zu verhindern, oder nutz &#8222;no-cache&#8220;, um bei jeder Anfrage eine Revalidierung zu erzwingen. Deaktiviere w\u00e4hrend der Entwicklung einfach den Cache in den Dev-Tools deines Browsers.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1777033618765\"><strong class=\"schema-faq-question\">Was ist der Unterschied zwischen 304 und 302?<\/strong> <p class=\"schema-faq-answer\">Die beiden sind v\u00f6llig unterschiedlich. 302 ist ein Redirect: Der Browser folgt der Weiterleitung zu einer neuen URL. 304 ist eine Cache-Validierung: Der Browser nutzt seine lokale Kopie der aktuellen URL aus dem Cache. Sie treten in unterschiedlichen Szenarien auf und dienen verschiedenen Zwecken.<\/p> <\/div> <\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine 304-Antwort bedeutet, dass dein Server dem Browser sagt: Der Inhalt hat sich seit dem letzten Check nicht ge\u00e4ndert, nutz einfach deine Version aus dem Cache. Das ist normalerweise ein Feature, kein Bug. Aber wenn es dazu f\u00fchrt, dass User veraltete Inhalte sehen, wird es zu einem Problem, das du beheben musst. Was ist der [&hellip;]<\/p>\n","protected":false},"author":44,"featured_media":30521,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1399],"tags":[2012],"ppma_author":[3402],"class_list":["post-31276","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-browserfehler"],"uagb_featured_image_src":{"full":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code.webp",1200,630,false],"thumbnail":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code-150x150.webp",150,150,true],"medium":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code-600x315.webp",600,315,true],"medium_large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code-768x403.webp",768,403,true],"large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code.webp",1200,630,false],"1536x1536":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code.webp",1200,630,false],"2048x2048":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code.webp",1200,630,false]},"uagb_author_info":{"display_name":"Milan Ivanovic","author_link":"https:\/\/contabo.com\/blog\/de\/author\/milan\/"},"uagb_comment_info":0,"uagb_excerpt":"Eine 304-Antwort bedeutet, dass dein Server dem Browser sagt: Der Inhalt hat sich seit dem letzten Check nicht ge\u00e4ndert, nutz einfach deine Version aus dem Cache. Das ist normalerweise ein Feature, kein Bug. Aber wenn es dazu f\u00fchrt, dass User veraltete Inhalte sehen, wird es zu einem Problem, das du beheben musst. Was ist der&hellip;","authors":[{"term_id":3402,"user_id":0,"is_guest":1,"slug":"contabro","display_name":"ContaBro","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","author_category":"","user_url":"","last_name":"","first_name":"","job_title":"","description":""}],"_links":{"self":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/31276","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/users\/44"}],"replies":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/comments?post=31276"}],"version-history":[{"count":2,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/31276\/revisions"}],"predecessor-version":[{"id":31282,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/31276\/revisions\/31282"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/media\/30521"}],"wp:attachment":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/media?parent=31276"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/categories?post=31276"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/tags?post=31276"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/ppma_author?post=31276"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}