Position actuelle: Accueil> Derniers articles> Prévenir le cache: définir des conseils pour le contrôle du cache et le pragma

Prévenir le cache: définir des conseils pour le contrôle du cache et le pragma

M66 2025-05-28

Dans le développement Web, nous devons parfois nous assurer que le navigateur ou le serveur proxy ne cache pas nos pages afin que les utilisateurs puissent obtenir le dernier contenu à chaque visite. La fonction d'en-tête () fournie par PHP peut être utilisée pour envoyer des en-têtes HTTP pour contrôler le comportement du cache. Cet article présentera en détail comment définir le contrôle du cache et le pragma à l'aide de la fonction d'en-tête () pour empêcher efficacement la mise en cache.

1. Pourquoi devons-nous empêcher la mise en cache?

Le cache du navigateur est conçu pour améliorer les performances et réduire la pression du serveur, mais dans certains scénarios (tels que: données dynamiques, informations personnelles d'utilisateur, pages de fonctionnement sensibles, etc.), nous devons forcer le navigateur à obtenir le dernier contenu du serveur à chaque fois, plutôt que de le charger du cache.

Si le contrôle du cache n'est pas réglé correctement, les utilisateurs peuvent voir des pages expirées, ce qui entraîne des données ou des erreurs incohérentes en fonctionnement.

2. Utilisez la fonction en-tête () pour envoyer des en-têtes HTTP

La fonction d'en-tête () de PHP vous permet d'envoyer des informations d'en-tête HTTP brutes au navigateur, qui doivent être appelées avant toute sortie (écho, imprimer, HTML).

3. Configurer le contrôle du cache

Le contrôle du cache est un en-tête important introduit par HTTP / 1.1 et est utilisé pour définir des politiques de mise en cache. Pour désactiver la mise en cache, vous pouvez utiliser la commande suivante:

  • Aucun magasin : aucun cache n'est autorisé.

  • NON-CACH : DOIT ÊTRE ROUERNIFIÉ À PETIT UNE FOIS.

  • MUST-REVALADIDAD : La ressource expirée doit être confirmée au serveur.

Exemple de code:

 <?php
// Désactiver le cache
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
?>

L'appel du deuxième en-tête () ici, le faux paramètre signifie que l'en-tête précédent avec le même nom ne doit pas être écrasé, mais annexé.

4. Configurer Pragma

Pragma est une ancienne méthode dans HTTP / 1.0 pour la compatibilité avec les anciens serveurs proxy.

Exemple de code:

 <?php
header("Pragma: no-cache");
?>

Bien que le contrôle du cache soit principalement utilisé maintenant, il est recommandé d'ajouter du pragma: sans cache aussi pour la compatibilité.

5. La configuration expire

En plus du contrôle du cache et du pragma , vous pouvez également définir l'en-tête Expire , définir le temps d'expiration à un certain point dans le passé et forcer le contenu à expirer.

Exemple de code:

 <?php
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
?>

6. Exemple complet

Voici un exemple complet anti-cache:

 <?php
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");

// Supposons que le contenu dynamique est sorti
echo "<html><body>";
echo "<h1>Heure actuelle: " . date('Y-m-d H:i:s') . "</h1>";
echo "<p>accéder <a href=\"https://m66.net/demo\">m66.net Exemple de page</a></p>";
echo "</body></html>";
?>

7. Choses à noter

  • Header () doit être appelé avant d'envoyer une sortie, sinon une erreur "en-têtes déjà envoyée" sera lancée.

  • Différents navigateurs et serveurs proxy ont un support légèrement différent pour les instructions de cache. Pour l'assurance, il est préférable de mettre en place le contrôle du cache , le pragma et expire en même temps.

  • Si vous utilisez un plug-in ou un CDN de cache, vous devrez peut-être également configurer une stratégie anti-cache à ces niveaux.