{"id":563,"date":"2015-02-19T19:22:54","date_gmt":"2015-02-19T18:22:54","guid":{"rendered":"http:\/\/blog.zeit.de\/dev\/?p=563"},"modified":"2015-09-16T12:30:30","modified_gmt":"2015-09-16T10:30:30","slug":"glaenzend-und-schnell-webseiten-mit-varnish","status":"publish","type":"post","link":"https:\/\/blog.zeit.de\/dev\/glaenzend-und-schnell-webseiten-mit-varnish\/","title":{"rendered":"Gl\u00e4nzend und schnell: Webseiten mit Varnish"},"content":{"rendered":"<p>Wer das heutige Netz kennt, wei\u00df, dass sich die Aufmerksamkeit dank Social Media in Sekundenbruchteilen auf einen Punkt konzentrieren kann. F\u00fcr diese Konzentration braucht es nicht mal einen Shitstorm. Ereignisse wie das <a href=\"http:\/\/www.zeit.de\/sport\/2014-01\/thomas-hitzlsperger-homosexualitaet-fussball\">Bekenntnis des ehemaligen Bundesligaprofis Thomas Hitzelsberger zu seiner Homosexualit\u00e4t<\/a> oder das tragische Attentat auf das Satiremagazin <em>Charlie Hebdo<\/em> vor einigen Wochen f\u00fchrten spontan zu weit mehr als doppelt so vielen Anfragen als \u00fcblich. Eine Situation, in der das g\u00e4ngige Konzept der <a href=\"http:\/\/de.wikipedia.org\/wiki\/Skalierbarkeit\">horizontalen und vertikalen Skalierung<\/a> &#8211; also bessere und mehr Rechner &#8211; nicht mehr funktioniert.<!--more--><\/p>\n<p>Ein solches System funktioniert gut,\u00a0solange dessen Lastanforderung linear w\u00e4chst. Man plant es so, dass es zun\u00e4chst das Doppelte der Normallast aush\u00e4lt. Wenn sich die Lastanforderungen erh\u00f6hen, stellt man nach und nach neue Rechner dazu oder baut \u00e4ltere Maschinen aus, um sie zu ersetzen.<\/p>\n<p>Die Benutzer von ZEIT ONLINE erwarten, dass die Seite gerade bei ungew\u00f6hnlichen Nachrichtenlagen verf\u00fcgbar ist. Dieses Ziel erreichen wir heute nur, weil wir <a href=\"https:\/\/www.varnish-cache.org\/\">Varnish<\/a> einsetzen. Varnish ist ein HTTP-Accelerator, der Anfragen via HTTP durch eine in der IT sehr g\u00e4ngige Technik beschleunigt: Caching.<\/p>\n<p>Seit der Version 2.0 ist Varnish bei ZEIT ONLINE im Einsatz. Derzeit ist Version 3 im Betrieb. Im letzten Jahr erschien Version 4. Als ZEIT ONLINE begann, Varnish einzusetzen, war es ein recht junges Projekt von FreeBSD Comitter Poul-Henning Kamp. Entwickelt f\u00fcr die norwegische Zeitung <em>Verdens Gang<\/em>, um die Auslieferungsgeschwindigkeit des Online-Angebots zu verbessern. Das ist der zweite gro\u00dfe Vorteil von Varnish: Das System h\u00e4lt nicht nur mehr Last aus, sondern wird auch schneller.<\/p>\n<p>Das Projekt selbst steht unter der BSD-Lizenz. Es handelt sich also um freie Software. Alle g\u00e4ngigen Linuxdistributionen bieten mittlerweile eine leicht installierbare Version von Varnish \u00fcber ihre Paketserver.<\/p>\n<p>Varnish ist von au\u00dfen betrachtet zun\u00e4chst einmal ein <em>reverse proxy<\/em>. Das bedeutet, dass er HTTP-Requests entgegennimmt und weiterverteilt. Eine F\u00e4higkeit, die sich Varnish mit etlichen anderen HTTP-Servern teilt, wie zum Beispiel dem weitl\u00e4ufig bekannten Apache.<\/p>\n<p>Genutzt werden <em>reverse proxys<\/em> gern, um verschiedene Dienste unter einer Domain zu subsummieren. Bei ZEIT ONLINE wird diese F\u00e4higkeit unter anderem f\u00fcr das Freitextblog genutzt. Mit ein bisschen Konfiguration k\u00f6nnen wir das Blog unter <code>www.zeit.de\/freitext<\/code> verf\u00fcgbar machen, obwohl es eigentlich auf einem ganz anderen Server mit der Domain <code>blog.zeit.de<\/code> gehostet wird. Solche Konfigurationen sind Alltag f\u00fcr Systemadministratoren. Sie beschleunigen jedoch nichts.<\/p>\n<p><figure id=\"attachment_566\" aria-describedby=\"caption-attachment-566\" style=\"width: 681px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/Screenshot-2015-02-11-21.26.34.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-566 size-full\" src=\"https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/Screenshot-2015-02-11-21.26.34.png\" alt=\"Screenshot 2015-02-11 21.26.34\" width=\"681\" height=\"114\" srcset=\"https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/Screenshot-2015-02-11-21.26.34.png 681w, https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/Screenshot-2015-02-11-21.26.34-540x90.png 540w\" sizes=\"auto, (max-width: 681px) 100vw, 681px\" \/><\/a><figcaption id=\"caption-attachment-566\" class=\"wp-caption-text\">Codebeispiel aus der Konfiguration von ZEIT ONLINE. Das Freitext-Blog unter der URL <a href=\"http:\/\/www.zeit.de\/freitext\">www.zeit.de\/freitext<\/a>.<\/figcaption><\/figure><\/p>\n<p>Genau an diesem Punkt wendet Varnish jedoch einen einfachen Trick an: Es merkt sich f\u00fcr jeden HTTP-Request die Antwort des Backends, also die Antwort des Servers, an den es den Request schickte, und speichert diese mit einem eindeutigen Schl\u00fcssel (genannt <em>hash key<\/em>) in einer Datenstruktur im Hauptspeicher (RAM). Bei einem weiteren Request auf eine so gespeicherte URL wird dann erneut der gleiche Schl\u00fcssel erzeugt, aus der Datenstruktur aufgerufen und direkt beantwortet. Die Anfrage wird also nicht mehr an ein Backend weitergeleitet, sondern direkt aus dem RAM bedient. Dies ist ein bemerkenswerter Performancegewinn, da wir davon ausgehen k\u00f6nnen, dass normalerweise f\u00fcr jeden Request erst eine Antwort berechnet werden muss.\u00a0<span class=\"s1\">Bei ZEIT ONLINE macht dies zwar ein vom eigentlichen CMS getrennter Anwendungsserver,\u00a0was\u00a0<\/span>schnell einige hundert Millisekunden beansprucht. Varnish schafft es\u00a0in einem Bruchteil der Zeit.<\/p>\n<p>Da im Netz nichts f\u00fcr die Ewigkeit ist, kann die Geschichte hier nicht enden. Sek\u00fcndlich werden Inhalte erneuert oder ver\u00f6ffentlicht, eine gecachte URL muss also aktualisiert werden k\u00f6nnen. Hier macht sich Varnish das HTTP-Protokoll zunutze, welches vorsieht, dass eine Response (also das Gegenst\u00fcck zu einem Request) beispielsweise mit einem Expires-Header angibt, wie lange sie g\u00fcltig ist. Erlischt diese G\u00fcltigkeit, wird sie von Varnish als <code>invalid<\/code> markiert. Man spricht von einer <em>Invalidierung<\/em>. Kommt nun ein neuer Request, wird Varnish diesen nicht mehr aus dem Hauptspeicher bedienen, sondern genau\u00a0das Backend fragen, von dem urspr\u00fcnglich\u00a0die passende Response kam.\u00a0Anschlie\u00dfend wird der Hauptspeicher\u00a0mit der neuen Response\u00a0aktualisiert.<\/p>\n<p>Neben der zeitgesteuerten Variante ist es au\u00dferdem m\u00f6glich eine Resource (also zum Beispiel einen Artikel) direkt aus dem Cache zu entfernen. Hier hat sich der Terminus PURGE-Request etabliert, obwohl der HTTP-Standard diese Methode eigentlich nicht vorsieht. Ein PURGE-Request ist ein normaler GET Request mit einem <code>Pragma: no-cache<\/code> und einem <code>Cache-Control: no-cache<\/code> Header. Also das, was ein Browser sendet, wenn man einen <code>Shift-Reload<\/code> macht. Will man nicht, dass jeder Benutzer so den Cache invalidieren kann &#8211; da dies schnell die Perfomance des Servers beeintr\u00e4chtigen k\u00f6nnte &#8211; schr\u00e4nkt man diese Requests mit einer IP-Range ein und steuert diese Requests dann zum Beispiel \u00fcber das CMS.<\/p>\n<p><figure id=\"attachment_565\" aria-describedby=\"caption-attachment-565\" style=\"width: 437px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/vcl.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-565 size-medium\" src=\"https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/vcl-437x540.png\" alt=\"vcl\" width=\"437\" height=\"540\" srcset=\"https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/vcl-437x540.png 437w, https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/vcl-830x1024.png 830w, https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/vcl.png 873w\" sizes=\"auto, (max-width: 437px) 100vw, 437px\" \/><\/a><figcaption id=\"caption-attachment-565\" class=\"wp-caption-text\">Der Varnish Request Flow zeigt die einzelnen Phasen von Request bis Response. Mit der VCL kann man in jede Phase eingreifen.<\/figcaption><\/figure><\/p>\n<p>F\u00fcr solche Konfigurationen hat Varnish eine eigene <em>Domain Specific Language<\/em> (DSL), genannt <em>Varnish Configuration Language<\/em> (VCL). Hier handelt es sich um eine dem C-Dialekt nahe Sprache, die daher f\u00fcr alle, die imperative Programmierung gewohnt sind, leicht lesbar ist. Gegen\u00fcber tabellarischen oder XML basierten Konfigurationskonstrukten ist dieser Ansatz auch deutlich intuitiver.<\/p>\n<p>Die VCL bietet zun\u00e4chst die M\u00f6glichkeit, Backends zu definieren. Gibt es f\u00fcr einen Zweck mehrere Backends, zum Beispiel solche, die Bilder ausliefern, k\u00f6nnen diese mit einem Director in einen Lastverbund genommen werden. F\u00fcr oben erw\u00e4hnte IP-Range gibt es die <code>acl<\/code> Direktive, die <em>access control list<\/em>.<\/p>\n<p>Die St\u00e4rke der VCL liegt jedoch darin, dass man mit ihr innerhalb des oben abgebildeten Zyklus in jede einzelne Phase eingreifen kann, um ein spezielles Backend auszuw\u00e4hlen oder Request und Response zu manipulieren.<\/p>\n<p><figure id=\"attachment_567\" aria-describedby=\"caption-attachment-567\" style=\"width: 621px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/Screenshot-2015-02-11-21.38.19.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-567 size-full\" src=\"https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/Screenshot-2015-02-11-21.38.19.png\" alt=\"Screenshot 2015-02-11 21.38.19\" width=\"621\" height=\"78\" srcset=\"https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/Screenshot-2015-02-11-21.38.19.png 621w, https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/Screenshot-2015-02-11-21.38.19-540x67.png 540w\" sizes=\"auto, (max-width: 621px) 100vw, 621px\" \/><\/a><figcaption id=\"caption-attachment-567\" class=\"wp-caption-text\">F\u00fcr das mobile Backend muss ein separater Hash erzeugt werden, damit f\u00fcr Nutzer der Mobilseite und der Desktopseite jeweils unterschiedliche Varianten eines Artikels ausgeliefert werden.<\/figcaption><\/figure><\/p>\n<p>In der Phase <code>vcl_recv<\/code> steht der reine Request zur Verf\u00fcgung. Die mobile Weiche von ZEIT ONLINE wird beispielsweise gr\u00f6\u00dftenteils in dieser Phase realisiert. Anhand des User-Agent-Header wird ausgewertet, ob der Benutzer die klassische Desktopseite oder eine Mobilansicht bekommt. Nat\u00fcrlich muss f\u00fcr beide Ansichten hier jeweils ein Objekt im Cache existieren und daher ben\u00f6tigen beide Seiten einen eigenen Hash, obwohl sie sich die gleiche URL teilen. Per default erstellt Varnish einen Hash aus URL und Host-Header. In der Phase <code>vcl_hash<\/code> k\u00f6nnen wir die Erzeugung dieses Werts manipulieren. In <code>vcl_fetch<\/code> sind bereits die Antwortheader des Backends da. Hier k\u00f6nnte man nun noch eingreifen und zum Beispiel eine Ablage im Cache (<code>vcl_hit<\/code>) verhindern &#8211; oder einen sogenannten Restart des Requests ausl\u00f6sen, falls die Antwort des Backends nicht die erwartete ist.<\/p>\n<p><figure id=\"attachment_570\" aria-describedby=\"caption-attachment-570\" style=\"width: 540px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/flussdiagramm_varnish.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-570 size-medium\" src=\"https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/flussdiagramm_varnish-540x299.png\" alt=\"flussdiagramm_varnish\" width=\"540\" height=\"299\" srcset=\"https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/flussdiagramm_varnish-540x299.png 540w, https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/flussdiagramm_varnish.png 822w\" sizes=\"auto, (max-width: 540px) 100vw, 540px\" \/><\/a><figcaption id=\"caption-attachment-570\" class=\"wp-caption-text\">Bei ZEIT ONLINE kann das Backend den Request an ein anderes Backend delegieren. M\u00f6glich wird dies durch die Restart Anweisung in Varnish.<\/figcaption><\/figure><\/p>\n<p>Die VCL ist ein Schl\u00fcsselfeature, da Varnish mit ihrer Hilfe bedienbar wird. In der ZEIT-ONLINE-Technik hat ein Gro\u00dfteil der Entwickler in Backend und Frontend bereits die zentrale VCL unserer Auslieferungsserver bearbeitet und weiterentwickelt. Varnish selbst l\u00e4uft so zuverl\u00e4ssig und Ressourcen sparend, dass sich die Software mittlerweile zu einem Eckpfeiler in der <em>RESTful<\/em> basierten Architektur von ZEIT ONLINE entwickelt hat. Eine Bedeutung, die mit dem bevorstehenden Update auf Version 4 sicher weiter ausgebaut wird.<\/p>\n<p><em>Dies war der erste Teil einer kleinen Serie, in der wir darstellen, warum wir Varnish einsetzen und sch\u00e4tzen. Im n\u00e4chsten Teil werden wir auf Hilfsprogramme eingehen, die mit Varnish ausgeliefert werden &#8211; allen voran das Programm <code>Varnishtest<\/code>.\u00a0Ron Drongowski<\/em><em>\u00a0ist Teamleiter Backend bei ZEIT ONLINE.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wer das heutige Netz kennt, wei\u00df, dass sich die Aufmerksamkeit dank Social Media in Sekundenbruchteilen auf einen Punkt konzentrieren kann. F\u00fcr diese Konzentration braucht es nicht mal einen Shitstorm. Ereignisse wie das Bekenntnis des ehemaligen Bundesligaprofis Thomas Hitzelsberger zu seiner Homosexualit\u00e4t oder das tragische Attentat auf das Satiremagazin Charlie Hebdo vor einigen Wochen f\u00fchrten spontan [&hellip;]<\/p>\n","protected":false},"author":406,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[16],"tags":[],"class_list":["post-563","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Gl\u00e4nzend und schnell: Webseiten mit Varnish - Dev-Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.zeit.de\/dev\/glaenzend-und-schnell-webseiten-mit-varnish\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gl\u00e4nzend und schnell: Webseiten mit Varnish - Dev-Blog\" \/>\n<meta property=\"og:description\" content=\"Wer das heutige Netz kennt, wei\u00df, dass sich die Aufmerksamkeit dank Social Media in Sekundenbruchteilen auf einen Punkt konzentrieren kann. F\u00fcr diese Konzentration braucht es nicht mal einen Shitstorm. Ereignisse wie das Bekenntnis des ehemaligen Bundesligaprofis Thomas Hitzelsberger zu seiner Homosexualit\u00e4t oder das tragische Attentat auf das Satiremagazin Charlie Hebdo vor einigen Wochen f\u00fchrten spontan [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zeit.de\/dev\/glaenzend-und-schnell-webseiten-mit-varnish\/\" \/>\n<meta property=\"og:site_name\" content=\"Dev-Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-02-19T18:22:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-09-16T10:30:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/Screenshot-2015-02-11-21.26.34.png\" \/>\n<meta name=\"author\" content=\"Ron Drongowski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschrieben von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ron Drongowski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"6\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zeit.de\/dev\/glaenzend-und-schnell-webseiten-mit-varnish\/\",\"url\":\"https:\/\/blog.zeit.de\/dev\/glaenzend-und-schnell-webseiten-mit-varnish\/\",\"name\":\"Gl\u00e4nzend und schnell: Webseiten mit Varnish - Dev-Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zeit.de\/dev\/#website\"},\"datePublished\":\"2015-02-19T18:22:54+00:00\",\"dateModified\":\"2015-09-16T10:30:30+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zeit.de\/dev\/#\/schema\/person\/33be436e0d199d6963e3a00739fee311\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zeit.de\/dev\/glaenzend-und-schnell-webseiten-mit-varnish\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zeit.de\/dev\/glaenzend-und-schnell-webseiten-mit-varnish\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zeit.de\/dev\/glaenzend-und-schnell-webseiten-mit-varnish\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zeit.de\/dev\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Gl\u00e4nzend und schnell: Webseiten mit Varnish\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zeit.de\/dev\/#website\",\"url\":\"https:\/\/blog.zeit.de\/dev\/\",\"name\":\"Dev-Blog\",\"description\":\"Entwicklungsblog von ZEIT ONLINE\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zeit.de\/dev\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zeit.de\/dev\/#\/schema\/person\/33be436e0d199d6963e3a00739fee311\",\"name\":\"Ron Drongowski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/blog.zeit.de\/dev\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/87bafd3e8324e40f86c03cddaa598f763679bc668362271216294f4ca35a7b7d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/87bafd3e8324e40f86c03cddaa598f763679bc668362271216294f4ca35a7b7d?s=96&d=mm&r=g\",\"caption\":\"Ron Drongowski\"},\"url\":\"https:\/\/blog.zeit.de\/dev\/author\/rondrongowski\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Gl\u00e4nzend und schnell: Webseiten mit Varnish - Dev-Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.zeit.de\/dev\/glaenzend-und-schnell-webseiten-mit-varnish\/","og_locale":"de_DE","og_type":"article","og_title":"Gl\u00e4nzend und schnell: Webseiten mit Varnish - Dev-Blog","og_description":"Wer das heutige Netz kennt, wei\u00df, dass sich die Aufmerksamkeit dank Social Media in Sekundenbruchteilen auf einen Punkt konzentrieren kann. F\u00fcr diese Konzentration braucht es nicht mal einen Shitstorm. Ereignisse wie das Bekenntnis des ehemaligen Bundesligaprofis Thomas Hitzelsberger zu seiner Homosexualit\u00e4t oder das tragische Attentat auf das Satiremagazin Charlie Hebdo vor einigen Wochen f\u00fchrten spontan [&hellip;]","og_url":"https:\/\/blog.zeit.de\/dev\/glaenzend-und-schnell-webseiten-mit-varnish\/","og_site_name":"Dev-Blog","article_published_time":"2015-02-19T18:22:54+00:00","article_modified_time":"2015-09-16T10:30:30+00:00","og_image":[{"url":"https:\/\/blog.zeit.de\/dev\/files\/2015\/02\/Screenshot-2015-02-11-21.26.34.png"}],"author":"Ron Drongowski","twitter_card":"summary_large_image","twitter_misc":{"Geschrieben von":"Ron Drongowski","Gesch\u00e4tzte Lesezeit":"6\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.zeit.de\/dev\/glaenzend-und-schnell-webseiten-mit-varnish\/","url":"https:\/\/blog.zeit.de\/dev\/glaenzend-und-schnell-webseiten-mit-varnish\/","name":"Gl\u00e4nzend und schnell: Webseiten mit Varnish - Dev-Blog","isPartOf":{"@id":"https:\/\/blog.zeit.de\/dev\/#website"},"datePublished":"2015-02-19T18:22:54+00:00","dateModified":"2015-09-16T10:30:30+00:00","author":{"@id":"https:\/\/blog.zeit.de\/dev\/#\/schema\/person\/33be436e0d199d6963e3a00739fee311"},"breadcrumb":{"@id":"https:\/\/blog.zeit.de\/dev\/glaenzend-und-schnell-webseiten-mit-varnish\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zeit.de\/dev\/glaenzend-und-schnell-webseiten-mit-varnish\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zeit.de\/dev\/glaenzend-und-schnell-webseiten-mit-varnish\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zeit.de\/dev\/"},{"@type":"ListItem","position":2,"name":"Gl\u00e4nzend und schnell: Webseiten mit Varnish"}]},{"@type":"WebSite","@id":"https:\/\/blog.zeit.de\/dev\/#website","url":"https:\/\/blog.zeit.de\/dev\/","name":"Dev-Blog","description":"Entwicklungsblog von ZEIT ONLINE","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zeit.de\/dev\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/blog.zeit.de\/dev\/#\/schema\/person\/33be436e0d199d6963e3a00739fee311","name":"Ron Drongowski","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/blog.zeit.de\/dev\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/87bafd3e8324e40f86c03cddaa598f763679bc668362271216294f4ca35a7b7d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/87bafd3e8324e40f86c03cddaa598f763679bc668362271216294f4ca35a7b7d?s=96&d=mm&r=g","caption":"Ron Drongowski"},"url":"https:\/\/blog.zeit.de\/dev\/author\/rondrongowski\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.zeit.de\/dev\/wp-json\/wp\/v2\/posts\/563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zeit.de\/dev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zeit.de\/dev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zeit.de\/dev\/wp-json\/wp\/v2\/users\/406"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zeit.de\/dev\/wp-json\/wp\/v2\/comments?post=563"}],"version-history":[{"count":30,"href":"https:\/\/blog.zeit.de\/dev\/wp-json\/wp\/v2\/posts\/563\/revisions"}],"predecessor-version":[{"id":653,"href":"https:\/\/blog.zeit.de\/dev\/wp-json\/wp\/v2\/posts\/563\/revisions\/653"}],"wp:attachment":[{"href":"https:\/\/blog.zeit.de\/dev\/wp-json\/wp\/v2\/media?parent=563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zeit.de\/dev\/wp-json\/wp\/v2\/categories?post=563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zeit.de\/dev\/wp-json\/wp\/v2\/tags?post=563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}