Dynamische Websites mit statischer Geschwindigkeit: die Kunst des Website-Caching

In letzter Zeit wurde viel über die Vorzüge statischer Websites gesagt. In vielen Situationen ist jedoch ein dynamischer Ansatz erforderlich. Ob Content-Management-System, Customer-Relationship-Tool oder Online-Shop – sie ermöglichen Endbenutzern die schnelle und konsistente Pflege komplexer Websites. Und wenn sie richtig zusammengestellt werden, können sie in puncto Geschwindigkeit mit statischen Websites mithalten.

[pullquote]Jede Anwendung, die häufig Daten lesen und schreiben muss, verursacht eine spürbare Verzögerung[/pullquote]

Unabhängig davon, welches System Sie verwenden, bestehen dynamische Websites normalerweise aus ähnlichen Elementen. Hierbei handelt es sich um eine Art Webserver, ein Backend und eine Anwendung, die in einer oder mehreren Programmiersprachen geschrieben sind. Diese Kombination von Komponenten bietet ein hohes Maß an Flexibilität, aber jede trägt ihren eigenen Overhead bei und erhöht die Ladezeit, was alle modernen Websites vermeiden möchten. Dies gilt insbesondere für den Datenbankzugriff. Jede Anwendung, die häufig Daten lesen und schreiben muss, verursacht eine spürbare Verzögerung. Hier helfen Caching und eine geeignete Caching-Strategie für Ihren Anwendungsfall. Das grundlegende Ziel des Caching besteht darin, unnötig häufige Aufrufe zwischen den Schichten der Anwendungsdatenbank zu verhindern und stattdessen vorgenerierte statische HTML-Seiten zu verwenden, die sich viel schneller in einem Browser rendern lassen.

Browser-Caching

Der erste Cache, der jedem Webbenutzer aufgefallen wäre, ist der Cache in seinem Browser. Wie oft haben Entwickler Sie gebeten, eine „Force-Refresh“ durchzuführen, um Änderungen zu sehen? Browser-Caches sind einfach, aber ein guter Ausgangspunkt, um Caching-Konzepte zu erklären. Ein Browser speichert Darstellungen der besuchten Webseiten auf dem Computer eines Benutzers und aktualisiert sie normalerweise einmal pro Sitzung, wenn Änderungen erkannt oder von der Website erzwungen werden.

Proxy-Caching

Ein häufig von Websitebesitzern und -administratoren eingesetztes Tool ist ein „Reverse-Proxy-Cache“, der zwischen Seitenanforderungen eines Webbrowsers und der Webanwendung liegt. Es fängt Anfragen ab und rendert Kopien von Seiten direkt aus dem Cache, was für einen spürbaren Geschwindigkeitsschub sorgt. Es stehen mehrere wichtige Proxy-Cache-Optionen zur Selbstinstallation oder als „Software as a Service“ zur Verfügung. (Wir ignorieren Cloud-Hosting-Anbieter, die normalerweise alles, was Sie benötigen, in einen eigenständigen Web-Stack packen.) Zu den beliebten Proxy-Cache-Optionen gehören: SaaS-Optionen für das Caching liegen im Allgemeinen in der Welt der Content Delivery Networks (CDNs), die statt eines zu platzieren Cache zwischen einem Benutzer und einem Web-Stack, um Benutzern Sätze zwischengespeicherter Inhalte bereitzustellen, die ihnen geografisch am nächsten liegen. Es ist ein subtiler Unterschied, der jedoch für große Websites mit globalem Publikum einen erheblichen Unterschied machen kann.

Verwendung von Lack

Lack ist in allen Linux-Paketmanagern verfügbar, als Docker-Image und viele weitere Optionen, lesen Sie die Installationsseite des Projekts für mehr Details.

Lesen:  Wie man mit Online-Bildung Geld verdient

Grundlegende Lackkonfiguration

Varnish speichert eine Standardkonfigurationsdatei entweder unter /usr/local/etc/varnish/default.vcl oder /etc/varnish/default.vclgeschrieben in VCL (Varnish-Konfigurationssprache). Diese Konfigurationsdatei wird über einen C-Interpreter in ein kleines Programm kompiliert, um die Geschwindigkeit noch weiter zu steigern. Je nachdem, wie Sie Varnish installiert haben, sieht die Konfigurationsdatei etwa so aus: backend default { .host = “127.0.0.1”; .port = “8000”; } Im einfachsten Fall definiert dies das von Varnish verwendete Standard-Backend und definiert den Host und Port, auf dem es lauschen und Inhalte abfangen soll.

Backend-Umfrage

Eine praktische Funktion von Varnish besteht darin, in vordefinierten Intervallen zu prüfen, ob ein Backend noch fehlerfrei ist. Es heißt „Backend Polling“ und wird durch Hinzufügen eines Probe-Abschnitts zur Backend-Deklaration konfiguriert: .probe = { .url=”https://www.webdesignerdepot.com/”; .timeout = 34ms; .Intervall = 1s; .window = 10; .threshold = 8; } Bei den oben genannten handelt es sich um die von Varnish bereitgestellten Standardeinstellungen, die es anweisen, ein bestimmtes Objekt zu besuchen .url jeden .Intervall und das zumindest .Schwelle aus .Fenster Sonden, die URL antwortet innerhalb .Auszeit Millisekunden gilt das Backend immer noch als fehlerfrei. Sobald Inhalte als „ungesund“ eingestuft werden, werden sie für einen vordefinierten Zeitraum aus dem Cache bereitgestellt.

Startlack

Wir werden spezifische Änderungen an der Varnish-Konfiguration unter jeder Plattformoption behandeln, werfen wir zunächst einen Blick auf die allgemeinen Optionen.

Häfen

Zunächst muss der Standardport für Ihren Webserver geändert werden. Ändern Sie beispielsweise in der Apache Vhost-Konfiguration den Port auf 81 oder 8080. Starten Sie den Varnish-Daemon mit dem Lackbefehl oder mit einem Service-Wrapper. Der Daemon verfügt über Flag-Optionen. Die gebräuchlichsten und nützlichsten sind:

  • -f: Legt den Pfad zur Konfigurationsdatei fest.
  • -s: Cache-Speicheroptionen. Wenn Sie dies auf RAM einstellen, erhalten Sie noch größere Geschwindigkeitssteigerungen.

Alles überprüfen funktioniert

Führen Sie das aus Lackstat Befehl oder Besuch isvarnishworking.com um zu überprüfen, ob Ihr Varnish-Server bereit ist und auf Anfragen lauscht.

Was Sie nicht zwischenspeichern sollten

Es gibt bestimmte Teile einer Website, die wir nicht zwischenspeichern möchten, beispielsweise die Verwaltungsseiten. Wir können sie ausschließen, indem wir eine erstellen vcl_recv Unterprogramm in der default.vcl Datei mit einer Wenn Anweisung, die definiert, was nicht zwischengespeichert werden soll: sub vcl_recv { # URI des Admin-Ordners if (req.url ~ “^/url/”) { return (pass); } return(lookup); } Wenn Sie Varnish 4 verwenden, sind die Dinge etwas anders, einschließlich der Rückgabewerte. Der vcl_recv Die Funktion kehrt jetzt zurück Ahasch Wert anstelle einer Suche. sub vcl_recv { … return(hash); } Hier legen wir auch Websites oder Subdomains fest, die Varnish ignorieren soll, indem wir eine hinzufügen req.http.host ~ ‘example.com’ zum Wenn Stellungnahme.

Kekse

Standardmäßig speichert Varnish keine Inhalte vom Backend, das Cookies setzt, zwischen. Wenn der Client ein Cookie sendet, wird Varnish ebenfalls direkt an das Backend weitergeleitet. Cookies werden häufig von Websites verwendet, um Benutzeraktivitäten zu verfolgen und benutzerspezifische Werte zu speichern. Im Allgemeinen sind diese Cookies nur für clientseitigen Code von Interesse und haben für das Backend oder Varnish kein Interesse. Wir können Varnish anweisen, Cookies zu ignorieren, außer in bestimmten Bereichen der Website: if ( !( req.url ~ ^/admin/) ) { unset req.http.Cookie; } Das Wenn Die Anweisung ignoriert Cookies, es sei denn, wir befinden uns im Admin-Bereich der Website, wo die Weitergabe von Cookies möglicherweise sinnvoller ist (es sei denn, Sie möchten die Website-Administratoren wirklich frustrieren).

Lesen:  Werbehintergründe für iPhone 14 und iPhone 14 Pro

Weitere Ausnahmen

Bei einer Standardinstallation speichert Varnish auch keine passwortgeschützten Seiten sowie GET- und HEAD-Anfragen zwischen.

Lack zum Einsatz bringen

Wir werden uns nun zwei perfekte Anwendungsfälle für Varnish ansehen: Drupal und Magento. Bei beiden handelt es sich um hochdynamische Systeme, die es technisch nicht versierten Benutzern ermöglichen, eine Vielzahl komplexer Aufgaben auszuführen. Dies kann zu datenbankabfrageintensiven Seitenladevorgängen führen und stark ausgelastete Websites werden merklich langsamer. Typische Seiten, die mit diesen Systemen erstellt wurden, verfügen über eine Mischung aus Inhalten, die selten und häufig aktualisiert werden.

Drupal

Drupal verfügt über Standard-Caching-Optionen, die ähnliche Funktionen wie Varnish ausführen, jedoch nicht die Flexibilität oder Geschwindigkeitssteigerungen bieten, die für größere oder komplexere Websites erforderlich sind. In wahrer Drupal-Manier gibt es eine Modul zur Handhabung der Lackintegration um einige der oben beschriebenen manuellen Konfigurationen zu speichern. Installieren Sie das Modul und stellen Sie sicher, dass Sie die im Modul enthaltenen Installationsanweisungen befolgen Liesmich Datei. Stellen Sie sicher, dass die /etc/default/varnish In der Datei sind die folgenden Daemon-Optionen festgelegt (und die Einrückung ist wichtig): DAEMON_OPTS=”-a :80 \ -T localhost:6082 \ -f /etc/varnish/default.vcl \ -S /etc/varnish/secret \ – s-Datei,/var/lib/varnish/$INSTANCE/varnish_storage.bin,128M“ Stellen Sie sicher, dass Apache und alle zugehörigen virtuellen Hosts Port 8080 und nicht 80 überwachen. Starten Sie beide Dienste neu, nachdem Sie diese Änderungen vorgenommen haben. Möglicherweise müssen Sie auf der Modulkonfigurationsseite einen „Lackkontrollschlüssel“ festlegen. Finden Sie heraus, was dieser Schlüssel ist cat /etc/varnish/secret Befehl und fügen Sie ihn in die Einstellungsseite ein. Wählen Sie die richtige Lackversion aus, speichern Sie die Einstellungen und Sie sollten unten auf der Seite eine Reihe grüner Häkchen sehen. Das Varnish-Modul interagiert mit den standardmäßigen Drupal-Cache-Einstellungen. Stellen Sie daher sicher, dass Sie diese aktiviert und für Ihren Anwendungsfall konfiguriert haben. Laufen Lackstat Beginnen Sie über die Befehlszeile mit der Navigation auf der Website als anonymer Benutzer. In der Befehlsausgabe sollten sich die Statistiken ändern. Einer der Pfade, die wir in Drupal nicht zwischenspeichern möchten, sind die Admin-Seiten, wir können dies mit a tun vcl_recv Unterroutine: sub vcl_recv { # URI des Admin-Ordners if (req.url ~ “^/admin/”) { return (pass); } unset req.http.Cookie; return(lookup); } Möglicherweise möchten Sie erwägen, (angemeldete) Benutzerseiten, Systemaktualisierungsseiten und andere Seiten, die von hochdynamischen Modulen wie Flag generiert werden, die in großem Umfang Ajax verwenden, um zu funktionieren, nicht zwischenzuspeichern. Tun Sie dies, indem Sie weitere hinzufügen erforderliche URL Parameter für die Wenn Stellungnahme.

Lesen:  Wie ändere ich die Auflösung in Windows 7, 10 und 11?

Magento

Eine Standardinstallation von Magento wird mit einem internen Caching-System geliefert, das statische Versionen von Site-Elementen in einem angegebenen Ordner speichert. Der System -> Cache-Verwaltung Die Seite bietet einen Überblick über den aktuellen Cache-Status und ermöglicht Ihnen das Löschen aller oder einzelner Komponenten-Caches. Auf dieser Seite können Sie aggregierte CSS- und JS-Dateien sowie automatisch generierte Bilddateien löschen. Die kommende Version 2 von Magento wird standardmäßig Varnish-Caching unterstützen, aber im Moment müssen wir auf Plugins von Drittanbietern zurückgreifen, ich empfehle das Terpentin-Modul. Lesen Sie unbedingt die Readme-Datei des Projekts Da darin einige zusätzliche Konfigurationsschritte aufgeführt sind, kann das Ignorieren dieser Schritte zur Beschädigung Ihrer Website führen. Das Terpentine-Modul ist hochgradig konfigurierbar und nimmt die erforderlichen Änderungen vor vcl Dateien und Varnish-Konfiguration für Sie. Einige wichtige Optionen zum Festlegen sind:

  • Backend-Host: Der Varnish-Host, standardmäßig verwendet 127.0.0.1
  • Backend-Port: Der Port, auf dem Varnish läuft, standardmäßig verwendet 80
  • URL-Blacklist: Eine Liste von URLs, die niemals relativ zum Magento-Stamm zwischengespeichert werden sollen. Die Admin- und API-URLs werden automatisch einbezogen.

Das Terpentine-Modul ist mit dem Standard-Magento-Cache verknüpft, sodass durch das Löschen von Caches auf der Varnish-Cache-Seite auch die relevanten Varnish-Caches gelöscht werden.

Allgemeine Hinweise

Abgesehen von der Verwendung von Varnish mit einem der oben genannten dynamischen Systeme finden Sie hier einige weitere Tipps, die die Cache-Fähigkeit jeder Website verbessern.

Konsistente URLs

Wenn Sie denselben Inhalt in verschiedenen Kontexten bereitstellen, sollte er dieselbe URL verwenden. Mischen Sie beispielsweise nicht die Verwendung von artikel.html, Artikel.htm Und Artikel, obwohl Ihr CMS dies möglicherweise zulässt. Dies führt zu drei verschiedenen zwischengespeicherten Versionen desselben Inhalts.

Gehen Sie sparsam mit Cookies um

Wie wir oben gesehen haben, sind Cookies schwer zwischenzuspeichern und selten so notwendig, wie wir denken. Versuchen Sie, ihre Verwendung und Anzahl auf dynamische Seiten zu beschränken.

Dateiverwaltung

Das Laden von Site-Assets kann einer der zeitaufwändigsten Teile des Renderns einer Seite sein. Es gibt einfache Tipps, um diesen Aufwand zu reduzieren: Die Verwendung von CSS-Bild-Sprites für die Ikonographie anstelle mehrerer kleiner Dateien führt zu weniger Netzwerkverkehr. Das lokale Hosten von CSS- und JavaScript-Bibliotheken bedeutet weniger Netzwerkverkehr und mehr Kontrolle über Caching-Strategien. Dies kann einen höheren Wartungsaufwand bedeuten, um diese Anlagen auf dem neuesten Stand zu halten. Speichern Sie diese Assets in Ordnern mit einheitlichen Namen, damit auch Verweise darauf konsistent sein können.

Schneller Vorlauf

Ich hoffe, diese Einführung zur Beschleunigung Ihrer dynamischen Websites durch Caching war hilfreich. Der Leistungsgewinn ist eine anfängliche Phase des Konfigurierens, Experimentierens und Optimierens wert. In Zeiten kurzer Aufmerksamkeitsspanne und Ungeduld wird jeder Geschwindigkeitsgewinn, den Sie aus Ihrem Setup herausholen können, den Unterschied für Ihre Benutzer und die Konkurrenz ausmachen.

Ausgewähltes Bild, Netzwerk-Cache-Image über Shutterstock.

Aktuelle Artikel:

Empfohlen