Skip to content

WCFV

Analytics Blog

Menu
Menu

Konfigurieren Sie den Varnish-Cache und beschleunigen Sie die Ladezeit Ihrer Anwendung 10x schneller

Posted on März 2, 2022 by admin
Varnish-Cache

Unabhängig von der Größe und Komplexität Ihrer Anwendung werden Benutzer es vorziehen, zu bleiben oder immer wieder zurückzukehren, wenn sie die Geschwindigkeit genießen, mit der der dynamische Inhalt Ihrer Anwendung gerendert wird. Verbesserte Leistung, schnelle Seitenzustellung und schnelle Serverantwort sind auch einige der wenigen Faktoren, die Benutzer an Ihre Anwendung binden.

Diese und viele weitere Faktoren tragen zu einer erfolgreichen und beliebten Webanwendung bei. Während es verschiedene Techniken und Strategien gibt, um moderne Webanwendungen zu beschleunigen, hat sich die Durchführung von Caching als viel wertvoller erwiesen.

Jede Anfrage an eine bestimmte Seite auf Ihrer Website kommuniziert direkt und erhält Antworten von Ihrem Server. Jedes Mal, wenn ein Benutzer eine bestimmte Seite besucht, führt Ihr Front-End einen HTTP-Aufruf durch, um den entsprechenden Inhalt abzurufen, und Ihr Server muss entsprechend antworten.

Für eine kleine Webanwendung ist dies möglicherweise nicht zu viel, aber sobald Ihre Anwendung zu skalieren beginnt, wird eine große Anzahl von Anforderungen an Ihren Webserver allmählich zu viel, um sie zu verarbeiten. Dies wird oft als unnötige Überlastung angesehen.

Das Bereitstellen einer Webseite beansprucht viele Ressourcen – insbesondere, wenn sie dynamisch generiert wird, wie sie über PHP erstellt wurden. Daher zeige ich Ihnen in diesem Varnish-Cache-Tutorial, wie Sie die Geschwindigkeit Ihrer PHP-Anwendung erhöhen können, ohne unbedingt vertikal oder horizontal skalieren zu müssen, sondern mit Varnish.

Was ist Varnish Cache und warum es zu benutzen

Varnish Cache ist ein Web Application Accelerator auch als Caching HTTP Reverse Proxy bekannt. Es fungiert eher als Mittelsmann zwischen Ihrem Client (dh Benutzer) und Ihrem Webserver. Das heißt, anstatt dass Ihr Webserver ständig Anfragen bestimmter Inhalte direkt abhört, übernimmt Varnish die Verantwortung.

Sobald eine Anfrage zum ersten Mal eingeht, leitet Varnish in PHP sie an den Webserver weiter, um eine entsprechende Antwort zu erhalten. Diese Antwort wird von Varnish in PHP zwischengespeichert, bevor sie an den Client gesendet wird. Interessanterweise wird jede nachfolgende Anfrage nach solchen Inhalten nur direkt aus dem Varnish-Cache bereitgestellt, anstatt direkt zum Webserver zu gelangen. Auf diese Weise kann Ihre Webanwendung eine große Anzahl gleichzeitiger Anforderungen von mehreren Benutzern verwalten, da der Server nicht einmal gestartet wird. Dies führt zu einer magischen Leistungssteigerung für Ihre Anwendung.

PHP Varnish verwendet die Varnish Configuration Language (VCL), damit Sie ihr Verhalten ändern können, indem Sie Logik hinzufügen, um Anforderungen zu bearbeiten. Sie können vom Webserver zurückgegebene Antworten bearbeiten, Cookies entfernen oder der Antwort Header hinzufügen.

Lack-Workflow

Holen Sie sich / einige-Webseite (Client) — → Cache –→ Holen Sie sich / einige-Webseite (Server) – → Cache –→ Zurück zum Client.

Lack-Cache-Workflow

 varnish Cache Workflow

Nehmen wir an, die erste Anforderung an die Seite dauert ungefähr 200 ms.

Sobald der Inhalt einer solchen Seite vollständig zwischengespeichert wurde, ändert sich der Ablauf vollständig und die Anforderung vom Client an dieselbe Seite trifft den Server nicht mehr direkt, da Varnish ihn bereits zuvor zwischengespeichert hat. Schauen Sie sich die folgende Abbildung an:

GET /some-web-page (client ) -→ Cache (HIT) . — > Und zurück zum Client

Eine nachfolgende Anfrage an die Seite 10ms …..

Genial oder?

Daher besteht die Idee darin, die Anzahl der an Ihren Backend-Server gesendeten Anforderungen so weit wie möglich zu reduzieren. Dies erhöht im Gegenzug die Seitenwiedergabegeschwindigkeit für Ihre Webanwendung.

Erste Schritte mit der Varnish-Konfiguration

Nun, da Sie mit der grundlegenden Einführung von Varnish und seinen Caching-Funktionen fortgefahren sind, ist es an der Zeit, Varnish zu konfigurieren und für eine PHP-Anwendung zu verwenden. Der Einstieg in Lack ist einfach. Zur korrekten Einrichtung verwenden wir eine vorhandene Anwendung von GitHub und stellen sie auf dem DigitalOcean-Server bereit. Danach werden wir Lack konfigurieren.

Richten Sie als Nächstes ein kostenloses Konto bei DigitalOcean ein und klicken Sie nach Abschluss auf die Schaltfläche „Erstellen“.

Scrollen Sie nach unten, um Ubuntu 16.04 auszuwählen, und beachten Sie, dass Sie die Größe eines Tröpfchens auswählen sollten.

Scrollen Sie nach unten, um einen SSH-Schlüssel hinzuzufügen, falls Sie einen haben. Andernfalls müssen Sie Ihren Posteingang nach dem Standardkennwort für Ihr Droplet durchsuchen. Fügen Sie als Nächstes einen Hostnamen hinzu. Ich habe meine varnish-Demo genannt. Klicken Sie nun auf Erstellen, um das Droplet zu erstellen.

Sobald der Vorgang abgeschlossen ist, wird das neue Droplet in der Liste der Droplets angezeigt. Fügen Sie SSH mithilfe der IP-Adresse zu Ihrem Droplet hinzu.

Machen Sie sich bereit für das Core Web Vitals Update

Ebook, um Ihre Website zu beschleunigen, bevor Sie Traffic verlieren.

Danke

Ihre Liste ist auf dem Weg in Ihren Posteingang.

Nginx-Webserver installieren

Sie können jetzt die Paketliste aktualisieren und Nginx installieren. Führen Sie den folgenden Befehl aus, um dies auszuführen:

sudo apt updatesudo apt install -y nginx
  • Hinweis: -y-Flag ist mit einer Standardantwort auf jede Frage zu antworten, die während der Installation gestellt wird

Unter Ubuntu 16.04 ist Nginx so vorkonfiguriert, dass es nach der Installation ausgeführt wird.Sobald die Installation abgeschlossen ist, können Sie die IP-Adresse Ihres Droplets im Browser aufrufen:

http://server_domain_or_ip

Demo von GitHub ziehen

Ich werde Git verwenden, um das Beispielprojekt von GitHub abzurufen, es ist mit Ubuntu 16.04 vorinstalliert. Um zu überprüfen, ob es bereits auf Ihrem Server installiert ist oder nicht, verwenden Sie den unten angegebenen Befehl:

git -v

Wenn Sie eine Meldung erhalten, dass Git nicht standardmäßig installiert ist, müssen Sie den folgenden Befehl ausführen, um es zu installieren:

apt install -y git

Als nächstes müssen Sie denselben Ordner verwenden, in dem sich die Standardseite für den Nginx-Webserver befindet. Navigieren Sie also zum öffentlichen Verzeichnis:

cd /var/www

Entfernen Sie den HTML-Ordner, erstellen Sie ihn neu und verschieben Sie ihn in ihn:

rm -rf htmlmkdir htmlcd html

Klonen Sie nun das Repository

// Install projectgit clone https://github.com/yemiwebby/varnish-demo.git

Damit haben Sie jetzt ein Beispielprojekt auf Ihrem Server installiert. Aber es wird vorerst nicht zugänglich sein, und das liegt daran, dass wir PHP nicht installiert haben. Lass uns das machen.

Das könnte Ihnen auch gefallen: Memcached mit PHP verwenden

PHP installieren und Nginx für die Verwendung des PHP-Prozessors konfigurieren

Nginx enthält keine native PHP-Verarbeitung wie einige andere Webserver. Wir installieren eine Software namens php-fpm und weisen Nginx an, alle PHP-Anforderungen an sie zu übergeben. Navigieren Sie zurück zum Stammverzeichnis Ihres Webservers und führen Sie den folgenden Befehl aus, um das PHP-FPM-Modul zu installieren:

$ cd ~$ sudo apt install php-fpm

Sobald der Installationsvorgang abgeschlossen ist, können Sie Nginx so konfigurieren, dass es den installierten PHP-Prozessor verwendet. Öffnen Sie die standardmäßige Nginx-Serverblockkonfigurationsdatei mit:

sudo nano /etc/nginx/sites-available/default

und ersetzen Sie den Inhalt durch:

server { listen 80 default_server; listen :80 default_server; root /var/www/html; index index.php; server_name YOUR_SERVER_IP; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; } location ~ /\.ht { deny all; }}

Wenn Sie fertig sind, laden Sie Nginx neu, um die erforderlichen Änderungen vorzunehmen:

$ sudo systemctl reload nginx

Jetzt können Sie die Seite auf Ihrem bevorzugten Webserver mit der IP-Adresse Ihres Droplets besuchen:

http://ip_address

Aktivieren des Cachings mit Varnish

Wenn Sie die Seite überprüfen, um die HTTP-Header auf der Registerkarte Netzwerk anzuzeigen, werden Sie keine Spuren von Varnish bemerken, da es nicht für die Verarbeitung von Anforderungen installiert oder konfiguriert ist. Ändern wir das, indem wir Varnish auf unserem Webserver installieren. Geben Sie dazu den folgenden Befehl ein:

$ sudo apt install -y varnish

Dadurch wird der Prozess der Installation eines Varnish-Caches auf Ihrem Server durchlaufen. Starten und aktivieren Sie nach Abschluss der Installation Varnish mit:

systemctl start varnishsystemctl enable varnish

Varnish lauscht standardmäßig auf Port 6081. Stellen Sie diesmal jedoch sicher, dass Sie Folgendes anhängen:6081 wie unten gezeigt:

Nginx, der Webserver, der für das Laden des Inhalts Ihrer Webanwendung verantwortlich ist, wird auf Port 80 ausgeführt. Damit Varnish die Verantwortung für das Zwischenspeichern und Rendern der Seite so schnell wie möglich übernehmen kann, muss sie sich zwischen Ihrem Web-App-Client und dem Server befinden. Dadurch wird sichergestellt, dass jede Anfrage an Ihren Server, die sich hauptsächlich auf Port 80 befindet, von Varnish abgefangen wird, und je nachdem, ob es sich um einen Cache-Treffer handelt oder nicht, wird Varnish entsprechend darauf reagieren und die entsprechende Antwort zurückgeben.

Ich werde den Prozess ändern, indem ich Varnish auf Port 80 und Nginx auf Port 8080 konfiguriere. Bearbeiten Sie dazu die Nginx-Konfigurationsdatei Ihrer Site erneut. In unserem Fall ist diese Datei /etc/nginx/sites-available/default. Ändern Sie die 80 in 8080:

server { listen 8080 default_server; listen :8080 default_server; root /var/www/html;}

Port 80 kann jetzt kostenlos für Varnish verwendet werden. Laden Sie Ihre Nginx-Konfiguration neu mit:

sudo systemctl reload nginx

und überprüfen Sie die Verfügbarkeit Ihrer Website anhand Ihrer IP-Adresse mit angehängtem Port 8080:

Als Varnish zuvor installiert wurde, wurden auch zwei Konfigurationsdateien auf dem Server erstellt. Sie sind:

  • / etc/standard/lack
  • /etc/Lack/Standard.vcl

Ich werde diese Dateien für Konfigurationen wie das Öffnen eines Ports für Varnish und das Bearbeiten von Anforderungen verwenden. Öffnen Sie nun diese Datei /etc/default/varnish:

sudo nano /etc/default/varnish

# Abhören auf Port 6081, Verwaltung auf localhost:6082 und weiterleiten an

# ein Inhaltsserver, der von der VCL-Datei basierend auf der Anforderung ausgewählt wurde.

DAEMON_OPTS=“-ein :6081 \

– T localhost:6082 \

– f /etc/varnish/default.vcl \

-S /etc/varnish/secret \

-s malloc,256m“

Suchen Sie nach der obigen Zeile und ändern Sie -a :6081 in -a :80.

Als nächstes öffnen Sie die Datei /etc/varnish/default.vcl:

sudo nano /etc/varnish/default.vcl

und überprüfen Sie, ob das Standard-Backend auf Port 8080 eingestellt ist, da Nginx von nun an dort dient. Suchen Sie nach der Zeile unten und stellen Sie sicher, dass die .der Port ist 8080.

# Standard-Backend-Definition. Stellen Sie dies so ein, dass es auf Ihren Inhaltsserver verweist.

 backend default { .host = "127.0.0.1"; .port = "8080"; }

Als nächstes kopieren Sie den Lack.service-Datei in unser Systemd-Verzeichnis. Dadurch kann systemd Varnish auf Port 80 starten. Führen Sie den folgenden Befehl aus:

$ sudo cp /lib/systemd/system/varnish.service /etc/systemd/system/

Dadurch wird die Varnish-Servicedatei kopiert.

Als nächstes öffnen Sie es:

$ sudo nano /etc/systemd/system/varnish.service

und suchen Sie nach der ExecStart-Zeile:

Description=Varnish HTTP acceleratorDocumentation=https://www.varnish-cache.org/docs/4.1/ man:varnishdType=simpleLimitNOFILE=131072LimitMEMLOCK=82000ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /etc/varnish/default.v$ExecReload=/usr/share/varnish/reload-vclProtectSystem=fullProtectHome=truePrivateTmp=truePrivateDevices=trueWantedBy=multi-user.target//ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m

Ändern Sie nun -F -a : 6081 in -F -a : 80. Speichern und beenden Sie die Datei.

Wenn Sie die Netzwerkstatistik mit dem Befehl netstat überprüfen:

:~# netstat -plntu

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:6081 0.0.0.0:* LISTEN 13257/varnishd

tcp 0 0 127.0.0.1:6082 0.0.0.0:* LISTEN 13257/varnishd

tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2440/nginx -g daemo

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1648/sshd

tcp6 0 0 :::6081 :::* LISTEN 13257/varnishd

tcp6 0 0 :::8080 :::* LISTEN 2440/nginx -g daemo

tcp6 0 0 :::22 :::* LISTEN 1648/sshd

Sie werden feststellen, dass der Varnish-Cache noch auf Port 6081 ausgeführt wird. Ändern Sie das, indem Sie Varnish neu starten:

systemctl daemon-reloadsystemctl restart varnish

und starten Sie auch Nginx neu.

sudo service nginx restart

Wenn Sie zu diesem Zeitpunkt die IP-Adresse Ihrer Webseite besuchen, werden Sie feststellen, dass die Website immer noch einwandfrei funktioniert.

Das könnte Sie auch interessieren: Integrieren Sie PHP Opcache & Machen Sie Ihre Anwendung mit Leistung groß

Ein Überblick über Varnish intern

Varnish löst einige Routinen aus, während die Verarbeitung des Caching-Inhalts Ihrer Webanwendung abgeschlossen wird. Werfen wir einen Blick auf einige der wichtigsten Routinen und was jede einzelne tut, um sicherzustellen, dass Inhalte mit Lichtgeschwindigkeit geliefert werden, was wiederum die Leistung Ihrer Webanwendung verbessert:

  • sub vcl_recv{} : Dies ist die erste Zeile, die Varnish trifft, sobald Ihr Client eine Anfrage akzeptiert.
  • sub vcl_backend_response{}: Dieser Callback wird nach der Antwort aufgerufen und wurde vom Backend-Server abgerufen. Sie können hier in diesem Block auch Änderungen an der Antwort vornehmen.
  • sub vcl_backend_fetch {}:
  • sub vcl_deliver {}: Dies ist die letzte Routine, die VCL trifft, bevor eine Antwort an den Client gesendet wird. Hier können Sie ganz einfach einige Bereinigungen durchführen, z. B. alles entfernen, was der Client nicht sehen soll, und so weiter.

F: Wie lösche ich den Cache?

EIN: Sie können den gesamten Varnish-Cache über die Befehlszeile mit dem Befehl ban löschen:
varnishadm „ban.URL .“ # Entspricht allen URLs
Sie können auch bestimmte Caches verbieten, indem Sie den Hostnamen beschreiben:
varnishadm „ban req.http.gastgeber == xxx.com „

F: Wie deaktiviere ich den Varnish-Cache?

EIN: Sie können Varnish ganz einfach von Ihrer Website deaktivieren, indem Sie die bearbeiten .htaccess-Datei mit dem folgenden Code:
Header add „Cache-Control“ „no-cache“
Dadurch wird Varnish vorübergehend von Ihrer Website deaktiviert. Sie können Varnish später aktivieren, indem Sie den folgenden Code entfernen.

Q: Wie lösche ich den Lack-Cache mit CLI?

A: Sie können den Varnish-Cache löschen oder bereinigen, indem Sie einfach den Varnish-Dienst neu starten. Dadurch wird der gesamte Varnish-Cache gelöscht, da er standardmäßig im Speicher gespeichert ist:
/etc/varnish restart
Oder
service varnish restart

F: Wie überprüfe ich, ob der Varnish-Cache funktioniert oder nicht?

A: Um zu überprüfen, ob Ihr Varnish-Dienst einwandfrei funktioniert oder nicht, verwenden Sie den X-Varnish Header, der Sie über den aktiven / nicht aktiven Status des Dienstes informiert. Um genauer zu sehen, ob es den Cache trifft, verwenden Sie den X-Cache-Header, um eine vollständige Analyse der Caches zu erhalten.

F: Varnish Cache vs Memcached: Welcher ist besser?

A: Beide Varnish & Memcached sind in bestimmten Caching-Domänen nützlich, es gibt jedoch einige Unterschiede zwischen den beiden.
Sie können Memcached als verteiltes In-Memory-Backend zum Zwischenspeichern von Anwendungsressourcen verwenden.
Während Varnish als Reverse Proxy verwendet wird, um die HTTP-Anforderungen der Anwendung extern zwischenzuspeichern.
Memcached kann als Allzweck-Caching-System bezeichnet werden, da es Ergebnisse aus der Datenbank zwischenspeichert und nur geringe Änderungen an der GET-Methode erfordert.
Wohingegen Varnish hinter dem Webserver arbeitet, Webseiten zwischenspeichert und keine Änderungen im Code erfordert.

Abschließende Worte

In diesem Beitrag habe ich kaum an der Oberfläche gekratzt, was man mit Lack machen kann. Es ist so mächtig, dass Sie viel mehr damit machen können. Neben der Möglichkeit, den Inhalt Ihrer Webanwendung zwischenzuspeichern und Anforderungen zu verarbeiten, kann Varnish Cache auch als Load Balancer und vieles mehr verwendet werden.

Lesen Sie die offizielle Dokumentation hier, um mehr über Varnish und andere großartige Konfigurationen zu erfahren, die damit ausgeführt werden können. Fühlen Sie sich frei, einen Kommentar, eine Frage oder einen Vorschlag im Kommentarbereich unten zu hinterlassen.

Teilen Sie Ihre Meinung im Kommentarbereich mit. JETZT KOMMENTIEREN

Diesen Artikel teilen

Kundenmeinung bei

“ Cloudways Hosting hat einen der besten Kundenservice und Hosting-Geschwindigkeit“

Sanjit C

Olususi k Oluyemi

Ein Tech-Enthusiast, Programmierfreak und Webentwicklungs-Junkie, der es liebt, neue Technologien zu nutzen.

Verbinden Sie sich auf: Twitter Community Forum

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Neueste Beiträge

  • Nichtmetallisches Gold und Malerei Geduld
  • Einfache Möglichkeiten, Cake Pops ohne Form herzustellen
  • Leitfaden für den Anbau von Ölpalmen (Palmöl)
  • Passwort für iPod Nano vergessen
  • Leben mit Anorexia Nervosa
  • Google SketchUp Pro 2022 Riss 21.0.339
  • Übermäßige Motorradmotorvibrationen – Ursachen und Lösungen
  • Wie öffnet man die STP-Datei in Autocad?
  • Dia de los Muertos Maske
  • Erstellen einer Peyote-Lünette
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Archive

  • März 2022
  • Februar 2022
  • Januar 2022
  • Dezember 2021
  • November 2021
  • Oktober 2021
  • September 2021

Meta

  • Anmelden
  • Feed der Einträge
  • Kommentare-Feed
  • WordPress.org
© 2022 WCFV | Powered by Superbs Personal Blog theme