"Besser" ist wirklich subjektiv. Es hängt von Ihren Anwendungsfällen ab ...
voretaq7
7
Manchmal ist eine einfache Frage besser als eine komplexe. Ich bin sehr besorgt über solche Aktionen von den Leuten, die diese Frage geschlossen haben, unter der Annahme, dass sie für das "ursprüngliche Q & A-Format" nicht gut ist. Ich bin auf der Suche nach diesem Thema und war sehr daran interessiert, das Ergebnis dieser Debatte zu sehen.
Roger
Lack hat leistungsstarke vcl-Konfiguration, Bereinigen, Reverse-Proxy-Cache, ESI Nginx kann mit FCGI arbeiten, Reverse-Proxy-Cache, SSI, keine Bereinigung (vielleicht gibt es ein Modul), was die Leistung betrifft, sind sie fast gleich für statische Dateien, Caching ... wenn Sie haben Fragen, die ich helfen kann
Bogdan Cosmin
Antworten:
14
Ich habe festgestellt, dass Lacke für kleine statische Dateien ~ 5% schneller sind als Nginx - Lacke vor Apache oder Lacke vor einem Web-App-Server wären ein großer Gewinn. Vor Nginx ist der Vorteil jedoch vernachlässigbar (insbesondere unter Berücksichtigung von Gemeinkosten und zusätzlicher Komplexität).
Können Sie einige Testergebnisse bereitstellen, um dies zu unterstützen? Was ist, wenn ich bereits nginx + opcache verwende? Hat die Verwendung von Lack dann einen Vorteil?
Ernst
23
Zunächst zur Verdeutlichung: Nginx ist ein Webserver mit allen damit verbundenen Funktionen und Komplexitäten. Es kann auch zwischengespeichert werden, dies ist jedoch nicht das primäre Entwurfsziel.
Lack ist kein Webserver. Es kann diese Rolle nicht ausfüllen (jedenfalls nicht ohne eine wirklich böse VCL). Seine Aufgabe besteht darin, Inhalte zwischenzuspeichern, die von einem anderen Server bereitgestellt werden. Bei Bedarf kann die Anforderung oder die Antwort geändert werden.
Wenn Nginx mit Ihrem Datenverkehr umgehen kann, ist es genug. Wenn nginx nicht mithalten kann, können Sie die Kapazität erhöhen, indem Sie einen Cache davor platzieren und den Cache so viele Anforderungen wie möglich verarbeiten lassen.
Als Beispiel verwenden wir Apache, um eine Reihe relativ komplexer PHP-Websites auf einem Cluster von Webservern auszuführen. Als es zu Kapazitätsproblemen kam, stellten wir ein Paar Varnish-Server vor den Apache-Cluster. Die Varnish-Hosts bearbeiten nun 85% aller eingehenden Anfragen, ohne das Apache-Backend zu stören.
Varnish speichert also den von PHP generierten dynamischen Inhalt zwischen? Oder nur das andere Zeug?
Alix Axel
Lack speichert, was immer Sie ihm sagen, um zu speichern. Es kann nur die PHP-Ausgabe, nur die statischen Dateien, beide oder keine zwischenspeichern. Es ist ein sehr mächtiges Werkzeug.
Insyte
Ich habe nach Ihrem konkreten Beispiel gefragt. Es verwundert mich, wie es möglich ist, dynamische Inhalte zwischenzuspeichern, ohne die dynamische Anwendung zu beschädigen (PHP-Sitzungen für den Anfang). Das Zwischenspeichern von statischen Inhalten scheint mir ein bisschen überflüssig zu sein.
Alix Axel
3
Es kommt auf den dynamischen Inhalt an. Angenommen, die Seite ist ein Blogeintrag mit Kommentaren. Es kann sehr teuer sein, den Kommentarthread zu generieren, aber es ist durchaus akzeptabel, ihn 5 Minuten lang zwischenzuspeichern. Das Zwischenspeichern des von einer Webmail-Anwendung zurückgegebenen dynamischen Inhalts wäre jedoch eindeutig problematisch. Sie können sogar einen gemischten Fall erstellen: Zwischenspeichern Sie die gesamte Ausgabe einer E-Commerce-App, teilen Sie Lack jedoch mit, dass er das Backend erneut aufrufen soll, um den Warenkorb-Indikator auszufüllen.
Antworten:
Ich habe festgestellt, dass Lacke für kleine statische Dateien ~ 5% schneller sind als Nginx - Lacke vor Apache oder Lacke vor einem Web-App-Server wären ein großer Gewinn. Vor Nginx ist der Vorteil jedoch vernachlässigbar (insbesondere unter Berücksichtigung von Gemeinkosten und zusätzlicher Komplexität).
quelle
Zunächst zur Verdeutlichung: Nginx ist ein Webserver mit allen damit verbundenen Funktionen und Komplexitäten. Es kann auch zwischengespeichert werden, dies ist jedoch nicht das primäre Entwurfsziel.
Lack ist kein Webserver. Es kann diese Rolle nicht ausfüllen (jedenfalls nicht ohne eine wirklich böse VCL). Seine Aufgabe besteht darin, Inhalte zwischenzuspeichern, die von einem anderen Server bereitgestellt werden. Bei Bedarf kann die Anforderung oder die Antwort geändert werden.
Wenn Nginx mit Ihrem Datenverkehr umgehen kann, ist es genug. Wenn nginx nicht mithalten kann, können Sie die Kapazität erhöhen, indem Sie einen Cache davor platzieren und den Cache so viele Anforderungen wie möglich verarbeiten lassen.
Als Beispiel verwenden wir Apache, um eine Reihe relativ komplexer PHP-Websites auf einem Cluster von Webservern auszuführen. Als es zu Kapazitätsproblemen kam, stellten wir ein Paar Varnish-Server vor den Apache-Cluster. Die Varnish-Hosts bearbeiten nun 85% aller eingehenden Anfragen, ohne das Apache-Backend zu stören.
quelle