text: Zwischenspeichern von HTTP-Antworten, wenn sie dynamisch von PHP erstellt werden - ViResist
  Home - PHP-Tutorials - Zwischenspeichern von HTTP-Antworten, wenn sie dynamisch von PHP erstellt werden
  Ich denke, meine Frage scheint ziemlich beiläufig zu sein, aber ertragen Sie mich, wenn es interessant wird (zumindest für mich :)).
  Stellen Sie sich eine PHP-Seite vor, deren Zweck darin besteht, eine angeforderte Datei aus dem Dateisystem zu lesen und als Antwort zurückzugeben. Nun stellt sich die Frage, wie man den Cache für diese Seite aktiviert. Hervorzuheben ist, dass die Dateien ziemlich groß sein können und die Aktivierung des Cache den Client davor bewahrt, denselben Inhalt immer wieder herunterzuladen.
  Die ideale Strategie wäre die Verwendung des Anforderungsheaders "If-None-Match" und des Antwortheaders "ETag", um ein Reverse-Proxy-Cache-System zu implementieren. Obwohl ich das so weit weiß, bin ich mir nicht sicher, ob dies möglich ist oder was ich als Antwort zurückgeben soll, um diese Technik zu implementieren!
  Cooles Auge. Passt aber immer noch nicht zu meinem.
  Seien Sie sich nicht so sicher, der Besitzer dieses Auges ist jetzt Juubis Jinchuuriki!
  10. Juli 2013 um 13:08 Uhr
  Vorerst aber wurde mein Trumpf noch nicht aufgedeckt. Lassen Sie uns diesen Chat fortsetzen Anime- und Manga-Chat. Um diesen Thread nicht zu überladen.
  Ich bin schon da, aber die Sache ist, dass ich kaum Zeit habe, etwas zu posten. Es tut uns leid.
  Das Bereitstellen riesiger oder vieler Hilfsdateien mit PHP ist nicht genau das, wofür es gemacht wurde.
  Betrachten Sie stattdessen X-Beschleunigung für nginx, X-Sendfile für Lighttpd bzw mod_xsendfile für Apache.
  Die anfängliche Anfrage wird von PHP verarbeitet, aber sobald die Download-Datei bestimmt wurde, werden einige Header gesetzt, um anzuzeigen, dass der Server das Senden der Datei handhaben soll, wonach der PHP-Prozess freigegeben wird, um etwas anderes zu bedienen.
  Sie können dann den Webserver verwenden, um das Caching für Sie zu konfigurieren.
  Statisch generierter Inhalt
  Wenn Ihre Inhalte aus PHP generiert werden und besonders teuer in der Erstellung sind, könnten Sie die Ausgabe in eine lokale Datei schreiben und die obige Methode erneut anwenden.
  Wenn Sie nicht in eine lokale Datei schreiben können oder möchten, können Sie HTTP-Antwortheader verwenden, um das Caching zu steuern:
  Dies veranlasst Clients, den Seiteninhalt zwischenzuspeichern, bis er abläuft oder wenn ein Benutzer ein Neuladen der Seite erzwingt (z. B. F5 drücken).
  Dynamisch generierte Inhalte
  Bei dynamischen Inhalten möchten Sie, dass der Browser Sie jedes Mal anpingt, aber den Seiteninhalt nur sendet, wenn es etwas Neues gibt. Sie können dies erreichen, indem Sie einige andere Antwortheader festlegen:
  Wenn der Browser Ihr Skript erneut pingt, fügt er jeweils die folgenden Anforderungsheader hinzu:
  Die ETag wird hauptsächlich verwendet, um den Netzwerkverkehr zu reduzieren, da Sie ihn in einigen Fällen zuerst berechnen müssen, um den Inhaltshash zu kennen.
  Die Last-Modified ist am einfachsten anzuwenden, wenn Sie lokale Dateicaches haben (Dateien haben ein Änderungsdatum). Eine einfache Bedingung macht es möglich:
  Wenn Sie keine Datei-Caches durchführen können, können Sie trotzdem verwenden ETag um festzustellen, ob sich die Inhalte zwischenzeitlich geändert haben.
  Es ist mein Problem, dass ich vergessen habe zu erwähnen, dass es unmöglich ist, PHP zu eliminieren. Es könnte eine komplizierte Logik innerhalb des PHP geben.
  @MehranZiadloo Vielleicht hast du meine Antwort nicht verstanden, ich habe sie umformuliert.
  15. Mai 2012 um 7:45 Uhr
  Obwohl Ihr Update Ihren Punkt verdeutlicht hat, ist es leider immer noch unmöglich, PHP zu eliminieren, da der Inhalt manchmal eher generiert als geladen wird. Danke trotzdem.
  15. Mai 2012 um 7:52 Uhr
  Habe die Antwort nochmal aktualisiert. Sie haben angegeben, dass "der Zweck darin besteht, eine Datei aus dem Dateisystem zu lesen", also sollten Sie sich darüber klarer sein 🙂
  15. Mai 2012 um 8:03 Uhr
  Wie funktioniert der Ping genau? Ich meine, wenn der Client eine Seite anfordert, sehe ich keine HTTP_IF_MODIFIED_SINCE-Variable und ich habe die ETAG beim Bereitstellen des Dokuments festgelegt. Da dies nicht funktioniert, habe ich eine andere Methode entwickelt, die den Server mit Ajax 'pingt' und nach der Versionsnummer fragt. Wenn die Versionsnummer nicht mit der Seite übereinstimmt, wird sie von window.location.reload(true) neu geladen, um eine Anfrage zu erzwingen. Beim Zwischenspeichern aller Inhaltsteile (z. B. CSS und JS) ist nur eine Anfrage erforderlich, um auf Unterschiede zu prüfen, anstatt "304 Not Modified"-Antworten zuzuweisen. Vielleicht schlecht, dass es auf JS angewiesen ist, aber funktioniert OK
  4. Dezember 2013 um 2:48 Uhr
  8461700cookie-checkZwischenspeichern von HTTP-Antworten, wenn sie dynamisch von PHP erstellt werdenyes