Wie kann ich HTTP-Header effektiv für das Caching mit PHP nutzen?

Susan Sarandon
Freigeben: 2024-11-04 03:03:29
Original
940 Leute haben es durchsucht

How can I effectively leverage HTTP headers for caching with PHP?

HTTP-Caching mit PHP-Headern verstehen

F: Welche HTTP-Header sind für effektives Caching mit PHP unerlässlich?

A: Bei der Implementierung von HTTP-Caching für eine Website spielen bestimmte Header eine entscheidende Rolle, um Browser bei der Verwaltung zwischengespeicherter Inhalte zu unterstützen. Zu den wesentlichen Headern gehören:

  • Vary: Dieser Header gibt an, dass der Inhalt je nach Parametern wie Sprache oder Benutzeragent variiert, um sicherzustellen, dass Browser die entsprechende zwischengespeicherte Version abrufen.
  • Zuletzt geändert: Gibt an, wann der Inhalt das letzte Mal geändert wurde. Browser vergleichen diesen Wert in nachfolgenden Anfragen mit dem If-Modified-Since-Header, um festzustellen, ob Inhalte aktualisiert werden müssen.
  • ETag: Dieser Header stellt ein Entitäts-Tag oder eine Prüfsumme des Inhalts dar. Browser vergleichen diesen Wert mit dem If-None-Match-Header, um eine erneute Anforderung unveränderter Inhalte zu vermeiden.

Implementierung:

  1. Cache-Richtlinie festlegen:

    <code class="php">session_cache_limiter('private_no_expire'); // Allow caching but do not reveal cache expiry time</code>
    Nach dem Login kopieren
  2. Ablauf festlegen:

    <code class="php">header("Cache-Control: max-age=" . (60 * 60 * 24 * 30)); // Set cache expiration to 30 days</code>
    Nach dem Login kopieren
  3. If-Modified-Since- und If-None-Match-Header verwalten:
    Vergleichen Sie die Werte dieser Header mit den Last-Modified- und ETag-Headern, um unnötige erneute Anforderungen zu vermeiden:

    <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 && $if_none_match == $etag) || (!$if_none_match)) &&
        ($if_modified_since && $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-Header effektiv für das Caching mit PHP nutzen?. 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!