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 ?

Comment améliorer les performances d'un site Web avec les en-têtes de cache HTTP en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-04 11:13:02473parcourir

How to Improve Website Performance with HTTP Cache Headers in PHP?

Comment implémenter des en-têtes de cache HTTP pour l'optimisation des performances

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.

Directives de contrôle du cache

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é.

En-têtes de réponse HTTP Date et ETag

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.

En-têtes de vérification du cache

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é.

Implémentation avec PHP

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn