Le cache de mise à jour de la page Web du compte officiel, cette chose est simple et simple, et elle est suffisamment compliquée pour en boire un pot. Vous avez travaillé dur pour mettre à jour l'article officiel du compte, mais l'utilisateur a toujours ouvert l'ancienne version. Dans cet article, jetons un coup d'œil aux rebondissements derrière cela et comment résoudre ce problème gracieusement. Après l'avoir lu, vous pouvez facilement faire face à divers problèmes de mise en cache, permettant à vos utilisateurs de toujours ressentir le contenu le plus frais.
Dites-moi d'abord quelques choses de base. Pour le dire franchement, afin d'améliorer la vitesse d'accès, le navigateur ou le serveur stocke des ressources statiques (telles que des images, CSS, JS) ou du contenu de la page. La prochaine fois que vous y accédez, vous pouvez le récupérer directement à partir du cache sans avoir à le télécharger à nouveau, et il est naturellement rapide. Mais cette chose est aussi une épée à double tranchant. La nouvelle version est en ligne, l'ancien cache est toujours là et l'utilisateur voit toujours un ancien contenu, ce qui est embarrassant.
Le problème de base est de savoir comment faire en sorte que le navigateur ou le serveur "oublie" l'ancien cache et de recharger la nouvelle version. Parmi eux, les informations d'en-tête de cache dans le protocole HTTP jouent un rôle clé. Cache-Control
et Expires
sont la clé pour contrôler la vie et la mort du cache.
Expires
est relativement simple et brut, spécifiez directement un temps d'expiration. Cependant, cette fois est le temps du serveur, et il peut y avoir des différences entre l'heure locale de l'utilisateur, donc la précision n'est pas élevée.
Cache-Control
est beaucoup plus flexible. D'une manière générale, max-age
peut être évité efficacement en combinant no-cache
avec une valeur suffisamment petite, ou simplement en utilisant no-store
. max-age
no-cache
Regardez un exemple, utilisez Python pour simuler les paramètres
Informations d'en-tête:
Cache-Control
Ce code utilise le framework FLASK pour simuler un service Web simple, forçant le navigateur à ne pas mettre la page.
from flask import Flask, make_response app = Flask(__name__) @app.route('/') def index(): response = make_response("Hello, World!") response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate' response.headers['Pragma'] = 'no-cache' response.headers['Expires'] = '0' return response if __name__ == '__main__': app.run(debug=True)
,
, no-cache
, no-store
Ces trois instructions peuvent essentiellement garantir que le dernier contenu est obtenu à chaque fois que vous demandez. must-revalidate
est ajouté pour la compatibilité avec les anciens navigateurs. Pragma: no-cache
Assurez-vous en outre que le navigateur ne cache pas. Ce n'est pas simplement l'ajout d'un paramètre, mais seulement après avoir compris le mécanisme de mise en cache HTTP que vous pouvez écrire du code efficace. Expires: 0
Bien sûr, c'est juste la solution la plus basique. Dans les applications réelles, vous devrez peut-être également considérer des technologies plus avancées telles que le numéro de version et la valeur de hachage de fichiers. Par exemple, ajoutez un numéro de version au nom de fichier ou à l'URL et modifiez le nom du fichier à chaque mise à jour, et le navigateur télécharge automatiquement le nouveau fichier. Ou utilisez la valeur de hachage de contenu dans le cadre du nom du fichier pour assurer la cohérence du contenu.
Pour aller plus loin, l'utilisation de CDN (Network de distribution de contenu) est également un outil puissant pour résoudre le problème de mise en cache. CDN peut mettre en cache vos ressources statiques aux serveurs du monde entier, réduisant la latence d'accès aux utilisateurs et également le contrôle des mises à jour de cache plus efficacement. Cependant, la configuration et la gestion des CDN sont relativement compliquées et nécessitent certaines connaissances professionnelles.
Enfin, n'oubliez pas que le code n'est qu'un outil, et cela dépend des idées pour résoudre des problèmes. Lorsque vous choisissez une solution, vous devez peser les performances, la complexité et les coûts de maintenance. N'écrivez pas de code difficile à établir pour poursuivre des performances extrêmes. La simplicité et l'efficacité sont la manière royale. N'oubliez pas que l'expérience utilisateur est la chose la plus importante. Une bonne solution devrait trouver un équilibre entre les performances et l'expérience utilisateur.
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!