puki: Cahing-Verwirrung: APC vs. Memcached vs. File-Cache (txt-files)

Bon soir!

Was ist schneller:
Ausgaben mit PHP APC zu cachen, Memcached zu nutzen oder Ausgaben in TXT-Files zu schreiben und zu includen, erst bei Änderung zu erneuern?

Macht es Sinn APC oder diesen FileCache (einfach checken ob die Ausgabe als txt vorliegt, wenn nicht oder erneuern: per file_put_contents schreiben und per file_get_contents auslesen) + Memcached zu nutzen?

Es verwirrt mich etwas mit dem ganzen Cachen.
Ich nutze PHP und möchte meine APP beschleunigen.

Und was bringt mit Outputbuffering bei dem ganzen? Bringt es überhaupt noch etwas?

  1. Ausgaben mit PHP APC zu cachen, Memcached zu nutzen oder Ausgaben in TXT-Files zu schreiben und zu includen, erst bei Änderung zu erneuern?

    memcached könnte theoretisch schneller als die Textdatei sein, weil RAM nunmal schneller ist als eine Festplatte. In der Praxis hängt das aber vom Rechner ab, denn auch das Dateisystem kann ganz hervorragend im RAM zwischenspeichern. Kurzum: Probiere es aus.

    Ich nutze PHP und möchte meine APP beschleunigen.

    Du benutzt PHP auf einem Mobiltelefon? Interessant …

    Und was bringt mit Outputbuffering bei dem ganzen? Bringt es überhaupt noch etwas?

    Wieso noch? Der Ausgabepuffer sammelt die Ausgabe des Skriptes und schickt sie in größeren Blöcken auf die Reise, anstatt in den Byte-Häppchen. Das ist zwar effizienter und deshalb durchaus empfehlenswert, hat aber nie einen nennenswerten Geschwindigkeitsrausch verursacht.
    Wirklich praktisch ist der Puffer wegen etwas anderem: Man kann auch dann noch HTTP-Kopfzeilen senden, wenn man vorher bereits etwas ausgegeben hat (siehe http://www.google.com/search?q="header+already+sent").

    1. memcached könnte theoretisch schneller als die Textdatei sein, weil RAM nunmal schneller ist als eine Festplatte. In der Praxis hängt das aber vom Rechner ab, denn auch das Dateisystem kann ganz hervorragend im RAM zwischenspeichern. Kurzum: Probiere es aus.

      Wann Memcached und wann APC? Beides zusammen?

      Ich nutze PHP und möchte meine APP beschleunigen.

      Du benutzt PHP auf einem Mobiltelefon? Interessant …

      App ist die Abkürzung für Application und das was ich habe ist eine Webapplication.

      Und was bringt mit Outputbuffering bei dem ganzen? Bringt es überhaupt noch etwas?

      Wieso noch? Der Ausgabepuffer sammelt die Ausgabe des Skriptes und schickt sie in größeren Blöcken auf die Reise, anstatt in den Byte-Häppchen. Das ist zwar effizienter und deshalb durchaus empfehlenswert, hat aber nie einen nennenswerten Geschwindigkeitsrausch verursacht.
      Wirklich praktisch ist der Puffer wegen etwas anderem: Man kann auch dann noch HTTP-Kopfzeilen senden, wenn man vorher bereits etwas ausgegeben hat (siehe http://www.google.com/search?q="header+already+sent").

      Super danke, das hat mir schonmal geholfen.

  2. Moin!

    Was ist schneller:
    Ausgaben mit PHP APC zu cachen, Memcached zu nutzen oder Ausgaben in TXT-Files zu schreiben und zu includen, erst bei Änderung zu erneuern?

    Nachmessen, es hängt davon ab, was alles zu tun ist bzw. welcher Aufwand des "jedesmal neu erstellen" wegfällt und durch "prüfen, ob sich was geändert hat, wenn nein, dann Cache benutzen, andernfalls neu erstellen und abspeichern" ersetzt wird.

    Was die diversen Methoden angeht:
    Du weißt, was APC macht? Du weißt, was memcached macht? Du kennst den Unterschied zwischen beidem?

    Du weißt, was der Unterschied zwischen APC/memcached und dem Speichern in Textdateien ist? Du hast ihn gemessen?

    Macht es Sinn APC oder diesen FileCache (einfach checken ob die Ausgabe als txt vorliegt, wenn nicht oder erneuern: per file_put_contents schreiben und per file_get_contents auslesen) + Memcached zu nutzen?

    Nachmessen! Du ersetzt die Einfachheit des "einfach neu erstellen" durch die Komplexität, erstmal ermitteln zu müssen, ob neu erstellt werden muss, plus das eventuelle Abspeichern und Lesen des Cache-Bereichs. Bei Operationen, die alleine und immer wieder z.B. eine Sekunde benötigen, und bei denen das Prüfen, ob der Cache noch aktuell ist, auch eine Sekunde benötigt, ist ein Cache nicht sinnvoll. Und selbst wenn sich die Wartezeit halbiert, wäre das noch sehr fraglich.

    Es verwirrt mich etwas mit dem ganzen Cachen.

    Dann lass es weg. :)

    Ich nutze PHP und möchte meine APP beschleunigen.

    Performanceverbesserung beginnt damit, nachzumessen, wo genau die Zeit wirklich verbraucht wird. Erst wenn man das weiß, kann man genau diese Punkte verbessern.

    Installier dir z.B. XDebug und mach ein Profiling deiner Skripte, dann siehst du, bei welchen Codeteilen die Rechenzeit verbraucht wird.

    Und was bringt mit Outputbuffering bei dem ganzen? Bringt es überhaupt noch etwas?

    Vermutlich bringts dir sehr wenig.

    - Sven Rautenberg