Dans le développement Web, la redirection des pages est une technique courante qui est utilisée pour diriger les utilisateurs d'une URL à une autre. Les scénarios courants incluent la redirection vers la page d'accueil de l'utilisateur après la connexion avec succès ou la redirection lorsque le chemin d'URL change.
Cependant, pendant le processus de redirection de la page, des en-têtes de réponse mis en cache inutiles peuvent se produire, ce qui peut faire en sorte que le navigateur ou le serveur proxy se cache des données anciennes, affectant l'expérience utilisateur et les performances de chargement des pages. Pour éviter cela, PHP fournit la fonction Header_Remove () , qui peut efficacement nettoyer les en-têtes de réponse liés au cache, améliorant ainsi les performances de chargement des pages.
La fonction Header_Remove () est une fonction intégrée dans PHP, qui est utilisée pour supprimer les informations d'en-tête spécifiées dans l'en-tête de réponse actuelle. Sa syntaxe de base est la suivante:
<span><span><span class="hljs-title function_ invoke__">header_remove</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span> = ?): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>
Nom $ : paramètre facultatif, spécifiant le nom de l'en-tête de réponse à supprimer. Si $ le nom n'est pas fourni, tous les en-têtes de réponse sont supprimés.
Valeur de retour: Retour True si l'en-tête de réponse est supprimé avec succès; Si l'en-tête de réponse échoue, revenez faux .
L'en-tête de réponse du cache (comme le contrôle du cache , expire , Pragma ) indiquera si le navigateur peut mettre en cache une page. Pour les pages de redirection, les paramètres de cache incorrects entraîneront la mise en cache de vieilles informations de redirection, ce qui entraînera des utilisateurs toujours dirigés vers la mauvaise page ou de la contenu obsolète.
Si l'en-tête de réponse du cache n'est pas nettoyé, le navigateur peut mettre en cache la page de la cible redirigée et continuer à utiliser les données mises en cache lorsque l'utilisateur demande plus tard. De cette façon, lorsque la page se charge, il peut charger directement du contenu à partir du cache au lieu de requêter le serveur, ce qui fait afficher la page des anciennes données et réduire les performances.
Améliorez les performances de chargement de la page en effaçant ces en-têtes de réponse à l'aide de Header_Remove () lors de la redirection, en vous assurant que le navigateur refait la page cible au lieu d'utiliser le cache.
Supposons que nous ayons un scénario où nous devons nettoyer le cache sur la redirection, nous pouvons utiliser Header_Remove () pour retirer l'en-tête de réponse lié au cache. Voici un exemple simple de code:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Effacer tous les en-têtes de réponse liés au cache</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header_remove</span></span><span>(</span><span><span class="hljs-string">'Cache-Control'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header_remove</span></span><span>(</span><span><span class="hljs-string">'Expires'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header_remove</span></span><span>(</span><span><span class="hljs-string">'Pragma'</span></span><span>);
</span><span><span class="hljs-comment">// Configuration de l'en-tête de redirection</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: https://www.example.com'</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Dans ce code, nous supprimons le contrôle du cache , expire et les en-têtes de réponse pragma via header_remove () , qui sont des en-têtes de contrôle de cache communs. Ensuite, la page est redirigée à travers la fonction d'en-tête () .
Si vous souhaitez uniquement supprimer certains en-têtes de cache, vous pouvez également spécifier le nom de l'en-tête de réponse à supprimer:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Clair Cache-Control et Expires En-tête de réponse</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header_remove</span></span><span>(</span><span><span class="hljs-string">'Cache-Control'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header_remove</span></span><span>(</span><span><span class="hljs-string">'Expires'</span></span><span>);
</span><span><span class="hljs-comment">// installation 301 Redirection permanente</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'HTTP/1.1 301 Moved Permanently'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: https://www.example.com'</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Dans cet exemple, nous avons supprimé les en-têtes de contrôle du cache et expiré , et réglé un code d'état de redirection permanent 301. Cela empêchera le navigateur de mettre la page en cache après la redirection.
La suppression de tous les en-têtes de réponse peut provoquer des effets secondaires inutiles: si vous ne nettoyez pas l'en-tête de réponse du cache, la suppression d'autres en-têtes de réponse indépendante du cache peut affecter d'autres fonctions (telles que le type de contenu, la longueur du contenu, etc.), il est donc recommandé de supprimer uniquement les en-têtes de réponse liés au cache.
Assurez-vous d'appeler Header_Remove () Avant de sortir quoi que ce soit: en php, en tête_remove () doit être appelé avant que le script ne puisse sortir quoi que ce soit (y compris HTML), sinon les en-têtes déjà envoyés l'erreur seront déclenchées. Habituellement, nous le configurons au début du script.
Utilisez la politique de mise en cache appropriée: lors du nettoyage des en-têtes liés au cache, définissez les politiques de mise en cache appropriées en fonction des besoins réels. Parfois, vous devez configurer des contrôles de cache appropriés pour certaines ressources afin de réduire les demandes de réseau en double.
Dans PHP, en utilisant la fonction Header_Remove () pour nettoyer les en-têtes de réponse liés au cache, les problèmes de cache lors de la redirection de la page peuvent être effectivement évités, améliorant ainsi les performances de chargement de la page. Lors de la redirection, le nettoyage des en-têtes de réponse mis en cache inutiles garantit que le navigateur charge la dernière page du serveur au lieu d'utiliser du contenu mis en cache obsolète.
Dans le développement réel, les développeurs devraient raisonnablement nettoyer les en-têtes de réponse en cache en fonction des besoins de la page et s'assurer qu'ils ne provoquent pas de problèmes de performance ou d'autres erreurs potentielles lorsque les redirections de page.