Ich habe eine Website mit Apache httpd als Server und mysql als Backend. Sie veröffentlicht einen "Gedanken für den Tag", der so populär geworden ist, dass der Server aufgrund der Anzahl der Anfragen zusammenbricht. Da dieselbe Seite immer wieder angefordert wird (der Gedanke ändert sich nur einmal am Tag), ist es möglich, einen Caching-Server vor meinen Hauptserver zu setzen, so dass der Caching-Server die Seite zurückgibt, wenn dieselbe Anfrage von verschiedenen Clients gestellt wird, ohne die Datenbank aufrufen zu müssen?
Antworten
Zu viele Anzeigen?Für sich langsam ändernde Seiten wird ein Cache definitiv die CPU-Auslastung reduzieren; aber in Ihrem extremen Fall, in dem sich die Seite einmal am Tag ändert und vollkommen vorhersehbar ist, wäre es viel einfacher, einen einfachen und schnellen statischen Dateiserver zu verwenden ( lighthttp , nginx usw.) und einen Cron-Job, der jeden Abend Ihren "Gedanken des Tages" ändert.
Viele nicht-interaktive Webseiten können auf diese Weise erstellt werden: Regelmäßiger Neuaufbau von HTML-Dateien aus Datenbanken oder anderen Quellen und Verwendung einfacher, schneller statischer Webserver.
Unbedingt. Es gibt viele Produkte, die sich für diesen Zweck gut eignen. Apache selbst kann so konfiguriert werden, dass es auf diese Weise funktioniert, aber wenn Sie mit Linux oder UNIX arbeiten, ist Squid die bessere Option, da es speziell für diese Aufgabe entwickelt wurde.
Unter Windows bietet MS seit jeher Cache-/Proxy-Produkte an, die diese Funktion übernehmen. Derzeit ist dies ISA Server 2006. Allerdings ist dies für diese Art von Anwendung ein ziemlicher Overkill.
Tintenfisch ist meine Empfehlung.
Ja. Sie sprechen von einem Reverse Proxy (oder "http-Beschleuniger", was ein ungenauer Begriff für dieselbe Sache ist). Er kann sein sehr effizient, und sehr viele Standorte mit hohem Durchsatz nutzen diese Technik.
Das Schlüsselelement, das es zu beachten gilt, sind die HTTP-Header für das Caching. Ich empfehle daher dringend, den HTTP-RFC zu lesen (das kann man tatsächlich tun). Wenn Sie die Header nicht richtig einstellen, können Sie wenig Wirkung erzielen oder sogar Sicherheitsprobleme haben (wenn personalisierte Seiten zwischengespeichert und den falschen Personen präsentiert werden).
Auch: Möglicherweise müssen Sie Ihre Seite in mehrere Teile aufteilen, um einen optimalen Caching-Effekt zu erzielen. Beispiel: Wenn Sie darauf bestehen, eine Uhr in einer Ecke Ihrer Seiten zu haben, die die aktuelle Serverzeit sekundengenau anzeigt, dann wird die ganze Seite nur für eine Sekunde cachefähig. Also 1) lassen Sie die blöde Uhr weg, oder 2) lassen Sie sie von einem clientseitigen Skript generieren - oder 3) lassen Sie das clientseitige Skript diesen bestimmten Teil der Seite von einer speziellen URL abrufen, die dann nur ein kleines, sich ständig änderndes, nicht cachefähiges HTML-Fragment ausgibt.
Ich habe Squid einmal als Reverse-Proxy für eine große Website verwendet. Wenn ich es heute wieder tun würde, würde ich es mit Lackierung .
Wenn sich Ihre "Gedanken für den Tag"-Seite nur einmal am Tag ändert, ist es vielleicht am einfachsten, einmal am Tag etwas Ähnliches zu starten
wget http://your_site/your_page.php -O /var/www/Ihr_Website-Verzeichnis/Ihre_Seite.html
(und ändern Sie die Links zu dieser Seite von your_page.php zu your_page.html)
Dann reduzieren Sie die Last auf Ihrem Apache-Server UND Ihrem SQL-Server...
- See previous answers
- Weitere Antworten anzeigen