Maison > développement back-end > tutoriel php > Comment puis-je utiliser les en-têtes de cache HTTP avec PHP pour améliorer les performances Web ?

Comment puis-je utiliser les en-têtes de cache HTTP avec PHP pour améliorer les performances Web ?

Mary-Kate Olsen
Libérer: 2024-11-05 16:18:02
original
555 Les gens l'ont consulté

How can I utilize HTTP cache headers with PHP to enhance web performance?

En-têtes de cache HTTP : améliorer les performances Web avec PHP

Pour les sites Web dont le contenu est largement statique, la mise en œuvre d'en-têtes de cache HTTP peut améliorer considérablement les performances. PHP fournit plusieurs fonctions intégrées pour vous aider dans cette tâche.

En-têtes de cache essentiels

Pour activer la mise en cache, pensez à utiliser les en-têtes suivants :

  1. Cache-Control : Spécifie la politique de cache. Pour le contenu privé qui ne doit pas être mis en cache publiquement, utilisez private_no_expire. Pour le contenu public avec une longue durée de vie, utilisez public, max-age=.
  2. Expire : Définit une date d'expiration pour le contenu mis en cache. Pour un contenu qui ne change jamais, pensez à fixer une date distante.
  3. Dernière modification : Indique la dernière fois que le contenu a été modifié. Cela permet aux navigateurs de déterminer si le contenu mis en cache est toujours à jour.
  4. ETag : Un identifiant unique pour le contenu. Si l'ETag correspond à la valeur de l'en-tête de requête If-None-Match, le navigateur peut supposer que le contenu n'a pas changé et servir la version en cache.

Gestion des requêtes conditionnelles

À optimisez davantage les performances, gérez les requêtes conditionnelles :

<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>
Copier après la connexion

Si l'en-tête If-None-Match correspond à l'ETag ou si le Si l’en-tête If-Modified-Since correspond à la date Last-Modified, une réponse 304 Not Modified est renvoyée, indiquant que le contenu mis en cache est suffisant. Sinon, le serveur renvoie le dernier contenu.

En implémentant ces en-têtes de cache, vous pouvez réduire considérablement la charge sur votre serveur Web et améliorer l'expérience utilisateur avec des chargements de pages plus rapides.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal