Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich HTTP-Caching mit PHP effektiv für dynamische Websites mit statischen Inhalten implementieren?

Wie kann ich HTTP-Caching mit PHP effektiv für dynamische Websites mit statischen Inhalten implementieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-04 09:35:01732Durchsuche

How can I effectively implement HTTP caching with PHP for dynamic websites with static content?

HTTP-Caching mit PHP integrieren

In Situationen, in denen der Seiteninhalt hauptsächlich statisch bleibt, aber von einer dynamischen Vorlage umgeben ist, kann die Nutzung von HTTP-Cache-Headern eine Optimierung erzielen Seitenlieferung. Hier ist eine vereinfachte Anleitung zur Implementierung von effektivem Caching mit PHP:

Wichtige Header für das Caching

Um Caching zu aktivieren, sollten Sie die folgenden Header senden:

  • Content-Type: Geben Sie den MIME-Typ und den Zeichensatz der Antwort an.
  • Vary: Accept: Geben Sie an, dass die Antwort je nach Accept des Clients variieren kann Header, der die Inhaltsaushandlung steuert.
  • Cache-Kontrolle: Legen Sie Anweisungen wie private_no_expire fest, um privates Caching zu ermöglichen, aber eine erneute Validierung zu verhindern. Alternativ können Sie öffentlich verwenden, um gemeinsames Caching zuzulassen.
  • Zuletzt geändert: Geben Sie Datum und Uhrzeit der letzten Änderung des Inhalts an.
  • ETag: Weisen Sie dem Inhalt eine eindeutige Kennung zu, anhand derer Clients feststellen können, ob die zwischengespeicherte Version noch aktuell ist.

Bedingte Anfragen und Handhabung

Eingehende bedingte Anfragen mit if-modified-since und if-none-match:

  • if-modified-since verarbeiten : Vergleichen Sie den Anforderungsheader mit dem Last-Modified-Header. Wenn die zwischengespeicherte Version noch gültig ist, geben Sie den Statuscode 304 (Nicht geändert) zurück.
  • if-none-match: Validieren Sie anhand des ETag-Headers. Wenn die zwischengespeicherte Version übereinstimmt, geben Sie eine 304 zurück.

Bestimmen der Cache-Gültigkeit

Erwägen Sie beim Generieren des ETags die Verwendung einer Prüfsumme oder einer Kombination von Faktoren wie Benutzer ID, Sprache und Zeitstempel. Für länger anhaltende statische Inhalte legen Sie einen längeren Ablauf fest.

Beispielimplementierung

<code class="php">$tsstring = gmdate('D, d M Y H:i:s ', $timestamp) . 'GMT';
$etag = $language . $timestamp;

$if_modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false;
$if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? $_SERVER['HTTP_IF_NONE_MATCH'] : false;
if ((($if_none_match &amp;&amp; $if_none_match == $etag) || (!$if_none_match)) &amp;&amp; 
($if_modified_since &amp;&amp; $if_modified_since == $tsstring))
{
header('HTTP/1.1 304 Not Modified');
exit();
}
else
{
header("Last-Modified: $tsstring");
header("ETag: \"{$etag}\"");
}</code>

Das obige ist der detaillierte Inhalt vonWie kann ich HTTP-Caching mit PHP effektiv für dynamische Websites mit statischen Inhalten implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn