Frage

Was ist der beste Weg, einen Cache für eine PHP-Site zu implementieren?Natürlich gibt es einige Dinge, die nicht zwischengespeichert werden sollten (z. B. Suchanfragen), aber ich möchte eine gute Lösung finden, die sicherstellt, dass ich den „Digg-Effekt“ vermeide.

Ich weiß, dass es WP-Cache für WordPress gibt, aber ich schreibe eine benutzerdefinierte Lösung, die nicht auf WP basiert.Ich bin daran interessiert, entweder meinen eigenen Cache zu schreiben (wenn es einfach genug ist), oder Sie könnten mir ein schönes, leichtes Framework nennen.Ich kenne mich allerdings nicht besonders gut mit Apache aus. Wenn es also ein PHP-Framework wäre, wäre es besser geeignet.

Danke.

War es hilfreich?

Lösung

Wenn ein Proxy-Cache indiskutabel ist, und Sie dienen komplette HTML-Dateien, werden Sie die beste Leistung erhalten, indem PHP gänzlich zu umgehen. Untersuchen, wie WP Super-Cache funktioniert.

uncache Seiten werden in einen Cache-Ordner mit ähnlicher URL-Struktur, wie Ihre Website kopiert. Bei späteren Anfragen stellt fest, mod_rewrite die Existenz der Cache-Datei und dient es stattdessen. sind andere RewriteCond Richtlinien verwendet, um sicher commen / eingeloggte Benutzer sehen Live-PHP-Anfragen, aber die Mehrheit der Besucher machen werden direkt von Apache bedient werden.

Andere Tipps

Sie können mit Ausgabepufferung selektiv speichern Teile Ihrer Ausgabe (die möchten, dass Sie den Cache) und an den nächsten Benutzer anzuzeigen, wenn es nicht lange genug gewesen ist. Auf diese Weise Sie machen noch andere Teile der Seite on-the-fly (beispielsweise anpassbare Boxen, persönliche Mitteilung).

Der beste Weg zu gehen, ist ein Proxy-Cache zu verwenden (Squid, Lack) und dient entsprechenden Cache-Control / Verfällt Header zusammen mit ETags: siehe Memcached , und versuchen Sie Ihre Datenbankabfragen cachen (oder besser noch, Pre- Seite Fragmente gerendert) dort.

//us3.php:

würde ich Memcached oder APC . Beide sind In-Memory-Caching-Lösungen mit dead-einfacher APIs und vielen Bibliotheken.

Das Problem mit diesen 2 ist, dass Sie sie auf Ihrem Web-Server oder einen anderen Server installieren müssen, wenn es Memcached wird.

APC

Pro:
  • Einfache
  • Schnell
  • Beschleunigt PHP Ausführung auch
Cons
  • Ist für verteilte Systeme nicht funktionieren, jede Maschine speichert seine Cache lokal

Memcached

Pro:
  • Fast (ish)
  • Kann auf einem separaten Server installiert werden für alle Web-Server zu verwenden, um
  • Sehr getestet, bei LiveJourna entwickelt
  • Wird von allen großen Jungs (Facebook, Yahoo, Mozilla)

    Nachteile:
  • Langsamer als APC

  • Mögliche Netzwerklatenz
  • Etwas mehr Konfiguration

Ich würde nicht empfehlen, einen eigenen zu schreiben, es gibt viele da draußen sind. Sie könnten mit einem Disk-basierten Cache gehen, wenn Sie keine Software auf Ihrem Webserver installieren können, aber es gibt mögliche Rennen Probleme zu behandeln. Eine Anforderung konnte in die Datei schreiben, während ein anderer liest.

Sie könnten tatsächlich Suchanfragen, sogar für ein paar Sekunden bis zu einer Minute zwischenzuspeichern. Es sei denn, Ihr db als ein paar Mal pro Sekunde mehr aktualisiert wird, würde eine gewisse Verzögerung in Ordnung sein.

Die PHP Smarty Template-Engine ( http://www.smarty.net ) ein ziemlich weit fortgeschritten Caching System.

Sie können die Details in dem Cache-Bereich des Smarty Handbuch finden: http: // www.smarty.net/manual/en/caching.php

Sie scheint für einen PHP Cache Rahmen zu suchen. Ich empfehle Ihnen, das Template-System TinyButStrong, die mit einem sehr guten Cachesystem Plugin kommt. Es ist einfach, leicht, individuell (Sie was auch immer Teil der HTML-Datei zwischenspeichern können Sie möchten), sehr mächtig ^^

Einfaches Caching von Seiten oder Teilen der Seiten - die Birne :: CacheLite Klasse. Ich benutze auch APC und memcache für verschiedene Dinge, aber die anderen Antworten, die ich bisher gesehen habe, sind mehr für vollständigere und komplexe Systeme. Wenn Sie nur einige Mühe Wiederaufbau eines Teils einer Seite speichern müssen -. Mit einem Datei-backed Speicher Cache_Lite ist völlig ausreichend, und sehr einfach zu implementieren

Projekt Gazelle (eine Open-Source-Torrent-Site) einen Schritt für Schritt Anleitung zum Einrichten von Memcached auf der Website die Sie einfach auf einer anderen Webseite verwenden können, möchten Sie vielleicht bis setzen, die viel Verkehr behandelt.

die Quelle Schnappen nach unten und lesen Sie die Dokumentation.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top