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

Patricia Arquette
Freigeben: 2024-11-04 09:35:01
Original
728 Leute haben es durchsucht

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!