In Szenarien, in denen dynamische Webseiten hauptsächlich aus statischen Inhalten bestehen, kann die Anwendung von HTTP-Cache-Headern mit PHP die Website-Leistung erheblich verbessern . Dieser Leitfaden befasst sich mit den wesentlichen Headern für effektives Caching.
cache-control: private, max-age=180 – Legt einen privaten Cache fest für 180 Sekunden. Auf private Caches kann nur von einzelnen Benutzern zugegriffen werden, wodurch die gemeinsame Nutzung durch mehrere Clients verhindert wird.
cache-control: public, max-age=180 – Legt einen öffentlichen Cache für 180 Sekunden fest. Öffentliche Caches stehen allen Clients zur Verfügung und ermöglichen den gemeinsamen Zugriff.
Letzte Änderung: GMT-Datum und -Uhrzeit – Stellt Datum und Uhrzeit bereit wann der Inhalt zuletzt geändert wurde, sodass Browser nach Updates suchen können.
ETag: (eindeutige Kennung) – Erzeugt einen Hash oder eine Prüfsumme, die den eindeutigen Status des Inhalts darstellt. Browser verwenden ETag-Header, um zu überprüfen, ob sich Inhalte seit der letzten Anfrage geändert haben.
If-Modified-Since: GMT-Datum und -Uhrzeit – Der Client sendet das letzte bekannte Änderungsdatum der Ressource. Wenn seit diesem Datum keine Änderungen stattgefunden haben, antwortet der Server mit dem Status „304 Nicht geändert“ und vermeidet so unnötigen Inhaltsabruf.
If-None-Match: (eindeutige Kennung) – Der Client Sendet den letzten bekannten ETag-Wert für die Ressource. Wenn das ETag mit dem aktuellen Wert des Servers übereinstimmt, wird der Status „304 Nicht geändert“ zurückgegeben.
Um diese Header in PHP zu implementieren, beachten Sie den folgenden Beispielcode:
<code class="php">$tsstring = gmdate('D, d M Y H:i:s ', $timestamp) . 'GMT'; $etag = md5($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>
Das obige ist der detaillierte Inhalt vonWie kann die Website-Leistung mit HTTP-Cache-Headern in PHP verbessert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!