Hallo! Als Varnish-Anbieter habe ich aus erster Hand gesehen, wie das Festlegen von HTTP-Caching-Headern in Varnish VCL die Website-Leistung entscheidend verändern kann. In diesem Blog werde ich Sie Schritt für Schritt durch den Prozess führen.
Lassen Sie uns zunächst verstehen, warum HTTP-Caching-Header so wichtig sind. Wenn ein Benutzer eine Website besucht, fordert der Browser Ressourcen wie HTML, CSS, JavaScript und Bilder vom Server an. Ohne ordnungsgemäßes Caching muss der Server diese Anfragen jedes Mal verarbeiten, was die Website verlangsamen kann, insbesondere in Zeiten mit hohem Datenverkehr. HTTP-Caching-Header teilen dem Browser und anderen zwischengeschalteten Caches (wie Varnish) mit, wie lange sie eine bestimmte Ressource speichern und wiederverwenden können, ohne zum Server zurückkehren zu müssen.


Grundlagen von Varnish VCL
Varnish Configuration Language (VCL) wird verwendet, um das Verhalten von Varnish zu steuern. Es ist wie eine Reihe von Regeln, die Varnish bei der Bearbeitung von Anfragen und Antworten befolgt. Es gibt einige wichtige Unterroutinen in VCL, auf die wir uns beim Festlegen von Caching-Headern konzentrieren werden:vcl_recv,vcl_backend_response, Undvcl_deliver.
vcl_recv
Dervcl_recvDie Unterroutine wird aufgerufen, wenn Varnish eine Anfrage von einem Client (normalerweise einem Browser) erhält. Dies ist ein großartiger Ort, um Entscheidungen darüber zu treffen, ob eine Anfrage zwischengespeichert werden soll oder nicht. Beispielsweise möchten Sie möglicherweise bestimmte Arten von Anforderungen ausschließen, z. B. solche für dynamische Inhalte, die sich häufig ändern.
sub vcl_recv { # POST-Anfragen nicht zwischenspeichern if (req.method == "POST") { return (pass); } # Sie können hier weitere Bedingungen basierend auf URL-Mustern hinzufügen if (req.url ~ "^/admin/") { return (pass); } }
In diesem Code weisen wir Varnish an, POST-Anfragen nicht zwischenzuspeichern, da sie normalerweise Formularübermittlungen beinhalten und wahrscheinlich dynamisch sind. Wir schließen auch Anfragen aus, die mit beginnen/admin/da es sich wahrscheinlich um einen Verwaltungsbereich der Website mit dynamischen Inhalten handelt.
vcl_backend_response
Dervcl_backend_responseDie Unterroutine wird aufgerufen, wenn Varnish eine Antwort vom Backend-Server erhält. Hier können wir die Caching-Header festlegen oder ändern.
sub vcl_backend_response { # Legen Sie eine Standard-Cache-Zeit für alle Antworten fest. set beresp.ttl = 3600s; # Sie können je nach Inhaltstyp unterschiedliche Cache-Zeiten festlegen if (beresp.http.Content - Type ~ "^text/html") { set beresp.ttl = 1800s; } # Einen benutzerdefinierten Cache hinzufügen – Steuerkopfsatz beresp.http.Cache – Control = „public, max – age=3600“; }
Hier legen wir eine Standard-Time-To-Live (TTL) von 3600 Sekunden (1 Stunde) für alle Antworten fest. Für HTML-Inhalte reduzieren wir die TTL auf 1800 Sekunden (30 Minuten), da sich HTML möglicherweise häufiger ändert. Wir fügen auch eine hinzuCache – KontrolleHeader, ein Standard-HTTP-Header, der dem Browser und anderen Caches mitteilt, wie mit der Ressource umgegangen werden soll.
vcl_deliver
Dervcl_deliverDie Unterroutine wird aufgerufen, kurz bevor Varnish die Antwort an den Client sendet. Sie können damit Header hinzufügen oder ändern, die der Client sehen wird.
sub vcl_deliver { # Fügen Sie einen benutzerdefinierten Header hinzu, um anzugeben, dass die Antwort vom Varnish-Set resp.http.X - Cached - By = "Varnish" zwischengespeichert wird; }
In diesem Beispiel fügen wir einen benutzerdefinierten Header hinzuX – Zwischengespeichert – Vonum den Client darüber zu informieren, dass die Antwort von Varnish zwischengespeichert wurde.
Erweiterte Caching-Szenarien
Schauen wir uns einige fortgeschrittenere Szenarien zum Festlegen von Caching-Headern an.
Cache-Busting
Manchmal möchten Sie den Browser zwingen, eine neue Version einer Ressource abzurufen, auch wenn diese noch innerhalb der Cache-Zeit liegt. Sie können dies tun, indem Sie eine Versionsnummer oder einen Hash an die Ressourcen-URL anhängen. In VCL können Sie dies umgehen, indem Sie die Versionsnummer aus der URL entfernen, bevor Sie sie an das Backend übergeben.
sub vcl_recv { if (req.url ~ "\?v=[0 - 9]+$") { set req.url = regsub(req.url, "\?v=[0 - 9]+$", ""); } }
Dieser Code entfernt die?v=123Teil der URL, sodass Varnish die Ressource basierend auf der Original-URL ohne die Versionsnummer zwischenspeichern kann.
Bedingtes Caching
Möglicherweise möchten Sie eine Ressource nur dann zwischenspeichern, wenn bestimmte Bedingungen erfüllt sind. Beispielsweise könnten Sie eine Seite nur dann zwischenspeichern, wenn sie über einen bestimmten HTTP-Statuscode verfügt.
sub vcl_backend_response { if (beresp.status == 200) { set beresp.ttl = 3600s; set beresp.http.Cache - Control = "public, max - age=3600"; } else { set beresp.ttl = 0s; set beresp.http.Cache - Control = "no - Cache"; } }
Hier werden erfolgreiche Antworten (Statuscode 200) eine Stunde lang zwischengespeichert, andere Antworten jedoch nicht.
Verwendung unserer Lackprodukte
In unserem Unternehmen bieten wir eine Reihe von Varnish-bezogenen Produkten an, die die Einrichtung und Verwaltung von HTTP-Caching-Headern noch einfacher machen können. Zum Beispiel unsereMatter Decklack auf Wasserbasisist eine großartige Option für Websites, die ein glattes, mattes Finish wünschen und gleichzeitig von optimiertem Caching profitieren möchten. Es enthält vorkonfigurierte VCL-Vorlagen, die Sie problemlos an Ihre spezifischen Anforderungen anpassen können.
UnserPolyurethan-Glanz auf Wasserbasisist eine weitere ausgezeichnete Wahl. Es bietet ein Hochglanz-Erscheinungsbild und verfügt über integrierte erweiterte Caching-Funktionen. Sie können damit je nach Ihren Anforderungen verschiedene Arten von Ressourcen mit unterschiedlichen Cache-Zeiten zwischenspeichern.
Und wenn Sie nach einer allgemeineren Lösung suchen, ist unsere unsere LösungKlarlack auf Wasserbasisist eine tolle Option. Es bietet eine klare Schutzschicht für die Ressourcen Ihrer Website und hilft bei der Einrichtung effizienter Caching-Header.
Kontaktieren Sie uns für den Einkauf
Wenn Sie mehr über unsere Varnish-Produkte erfahren möchten oder Hilfe beim Einrichten von HTTP-Caching-Headern in Varnish VCL benötigen, zögern Sie nicht, uns zu kontaktieren. Wir verfügen über ein Expertenteam, das Sie durch den Prozess begleiten und Ihnen dabei helfen kann, das Beste aus Ihrer Caching-Einrichtung herauszuholen. Egal, ob Sie ein kleines Unternehmen mit einer einfachen Website oder ein großes Unternehmen mit komplexen Caching-Anforderungen sind, wir sind für Sie da.
Referenzen
- Lackdokumentation
- HTTP-Caching RFC (RFC 7234)
Da haben Sie es also! Das Festlegen von HTTP-Caching-Headern in Varnish VCL mag zunächst etwas komplex erscheinen, aber mit dem richtigen Wissen und unseren Produkten können Sie die Leistung Ihrer Website optimieren und Ihren Benutzern ein besseres Erlebnis bieten.
