Maison > Article > développement back-end > Comment améliorer les performances d'un site Web avec les en-têtes de cache HTTP en PHP ?
Dans les scénarios où les pages Web dynamiques sont principalement constituées de contenu statique, l'application d'en-têtes de cache HTTP avec PHP peut améliorer considérablement les performances du site Web. . Ce guide approfondira les en-têtes essentiels pour une mise en cache efficace.
cache-control: private, max-age=180 - Définit un cache privé pour 180 secondes. Les caches privés ne sont accessibles que par des utilisateurs individuels, empêchant le partage entre plusieurs clients.
cache-control: public, max-age=180 - Définit un cache public pendant 180 secondes. Les caches publics sont disponibles pour tous les clients, permettant un accès partagé.
Dernière modification : date et heure GMT - Fournit la date et l'heure lorsque le contenu a été modifié pour la dernière fois, permettant aux navigateurs de vérifier les mises à jour.
ETag : (identifiant unique) - Génère un hachage ou une somme de contrôle représentant l'état unique du contenu. Les navigateurs utilisent les en-têtes ETag pour vérifier si le contenu a changé depuis la dernière requête.
If-Modified-Since : date et heure GMT - Le client envoie la dernière date de modification connue de la ressource. S'il n'y a eu aucun changement depuis cette date, le serveur répond avec un statut 304 Non modifié, évitant ainsi une récupération inutile du contenu.
If-None-Match : (identifiant unique) - Le client envoie la dernière valeur ETag connue pour la ressource. Si l'ETag correspond à la valeur actuelle du serveur, un statut 304 Not Modified est renvoyé.
Pour implémenter ces en-têtes en PHP, considérez l'exemple de code suivant :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!