1. Qu'est-ce que le CDN ?
En ce qui concerne le rôle de CDN, vous pouvez utiliser 8 ans d'expérience dans l'achat de billets de train pour le décrire :
Il y a huit ans, il n'y avait pas d'agence de billets de train, et 12306. cn l'était encore plus. Pas moyen de commencer. À cette époque, les billets de train ne pouvaient être achetés qu'à la billetterie de la gare, et le petit comté où je vivais n'avait pas accès aux trains. Les billets de train devaient être achetés à la gare de la ville, et cela prenait 4 heures. aller et venir du comté à la ville. Le trajet est une perte de vie. La situation s'est améliorée plus tard. Un bureau de vente de billets de train est apparu dans le petit chef-lieu. Vous pouvez acheter des trains directement au bureau de vente, ce qui est beaucoup plus pratique. Les habitants de la ville n'ont plus besoin de faire la queue à un moment donné pour acheter des billets. .
CDN peut être compris comme les points de vente de billets de train répartis dans chaque comté. Lorsque l'utilisateur navigue sur le site Web, le CDN sélectionnera un nœud périphérique CDN le plus proche de l'utilisateur pour répondre ainsi à sa demande. , Hainan Mobile La requête de l'utilisateur n'ira pas jusqu'au serveur de la salle informatique de Beijing Telecom (en supposant que le site d'origine soit déployé dans la salle informatique de Beijing Telecom).
Les avantages du CDN sont évidents : (1) les nœuds CDN résolvent le problème de l'accès entre opérateurs et entre régions, et le délai d'accès est considérablement réduit (2) la plupart des requêtes sont traitées au niveau des nœuds périphériques CDN ; , et CDN joue un rôle. La fonction de déchargement réduit la charge sur le site d'origine.
2. Qu'est-ce que le cache ?
Cet article ne se penchera pas sur l'architecture de haut niveau derrière CDN, ni sur la manière dont CDN met en œuvre des stratégies globales de planification du trafic. Cet article se concentre sur la façon dont les données sont mises en cache après l'installation de CDN. La mise en cache est un exemple omniprésent d’échange d’espace contre du temps. En utilisant l’espace supplémentaire, nous pouvons obtenir des vitesses plus rapides.
Tout d'abord, regardons comment le navigateur de l'utilisateur interagit avec le serveur lorsqu'aucun site Web n'est connecté au CDN :
Lorsque l'utilisateur navigue sur le site Web, le navigateur peut enregistrer le contenu du site Web localement. Copies d'images ou d'autres fichiers, de sorte que lorsque l'utilisateur visite à nouveau le site Web, le navigateur n'ait pas à télécharger tous les fichiers. Réduire le volume de téléchargement signifie augmenter la vitesse de chargement des pages.
Si une couche de CDN est ajoutée au milieu, l'interaction entre le navigateur de l'utilisateur et le serveur est la suivante :
Le navigateur client vérifie d'abord si le cache local a expiré. expire, il va au bord du CDN. Le nœud lance une demande et le nœud périphérique CDN détectera si le cache des données demandées par l'utilisateur a expiré. S'il n'a pas expiré, il répondra directement à la demande de l'utilisateur. cette fois, une requête http terminée se termine ; si les données ont expiré, le CDN doit également envoyer un message de retour au site d'origine (retour à la requête source) pour extraire les dernières données. Le diagramme de topologie typique du CDN est le suivant :
On peut voir que dans le scénario où le CDN existe, les données sont passées par deux étapes : la mise en cache du client (navigateur) et la mise en cache du nœud périphérique du CDN. Voici les deux étapes : Analyse détaillée des deux étapes de la mise en cache
2. Mise en cache du client (navigateur)
Inconvénients de la mise en cache du client
La mise en cache côté client réduit les requêtes du serveur, évite le chargement répété de fichiers et améliore considérablement les performances des utilisateurs. Cependant, lorsque le site Web est mis à jour (par exemple, les fichiers CSS, JS et image sont remplacés), l'ancienne version du fichier est toujours enregistrée localement dans le navigateur, ce qui entraîne des conséquences imprévisibles.
Il était une fois, lorsqu'une page était chargée, les positions des éléments sur la page variaient et les clics sur les boutons échouaient. Le GG frontal demandait habituellement : « Le cache a-t-il été vidé ? , puis Ctrl+F5, tout va bien. Mais parfois, si nous appuyons simplement sur Entrée dans la barre d'adresse du navigateur, ou si nous appuyons simplement sur F5 pour actualiser, le problème n'est toujours pas résolu. Savez-vous que ces trois méthodes de fonctionnement différentes déterminent la manière dont le navigateur actualise la stratégie du cache ?
Comment le navigateur détermine-t-il s'il doit utiliser un fichier local ou un nouveau fichier sur le serveur ? Voici plusieurs méthodes de jugement.
Politique de cache du navigateur
Expire
Expire : samedi 24 janvier 2015 20:30:54 GMT
Si Expires est défini dans le message de réponse http, nous éviterons la connexion au serveur avant l'expiration d'Expires. Pour le moment, le navigateur n'a pas besoin d'envoyer de requête au navigateur, il lui suffit de déterminer si le matériel en cours a expiré. Il n'est pas du tout nécessaire d'augmenter la charge sur le serveur.
Cache-control : max-age
La méthode Expires est très bonne, mais nous devons calculer une heure précise à chaque fois. La balise max-age nous permet de gérer plus facilement les délais d’expiration. Inutile de dire que vous ne pourrez utiliser ces informations que pendant une semaine.
L'âge maximum est mesuré en secondes, tel que :
Cache-Control:max-age=645672
La page spécifiée expirera dans 645672 secondes (7,47 jours).
Dernière modification
Afin de notifier au navigateur la version actuelle du fichier, le serveur enverra une balise avec l'heure de la dernière modification, par exemple :
Last-Modified:Tue , 06 janvier 2015 08 :26:32 GMT
De cette manière, le navigateur connaîtra l'heure de création du fichier qu'il a reçu. Lors des requêtes ultérieures, le navigateur vérifiera selon les règles suivantes :
1. Parcourir l'hôte : Hé, j'ai besoin du fichier jquery.min.js s'il a été modifié après le mardi 6 janvier 2015 à 08:26:32 GMT, veuillez me l'envoyer.
2. Serveur : (vérifiez l'heure de modification du fichier)
3. Serveur : Hé, ce fichier n'a pas été modifié après cette heure, vous disposez déjà de la dernière version.
4. Navigateur : Super, alors je l'afficherai à l'utilisateur.
Dans ce cas, le serveur renvoie uniquement un en-tête de réponse 304, ce qui réduit la quantité de données de réponse et améliore la vitesse de réponse. Concernant la réponse 304, veuillez vous référer à :
http://www.cnblogs.com/ziyunfei/archive/2012/11/17/2772729.html
L'image ci-dessous montre la page renvoyant un en-tête de réponse 304 après en appuyant sur F5 pour actualiser la page.
ETag
Souvent, comparer les fichiers par heure de modification fonctionne. Cependant, dans certaines circonstances particulières, telles que l'horloge du serveur est erronée, l'horloge du serveur est modifiée ou l'heure du serveur n'est pas mise à jour après l'arrivée de l'heure d'été, cela entraînera le problème de comparaison des versions de fichiers à travers l'heure modifiée.
ETag peut être utilisé pour résoudre ce problème. ETag est un identifiant unique d'un fichier. Comme un hachage ou une empreinte digitale, chaque fichier possède une signature individuelle qui change à chaque modification du fichier.
Le serveur renvoie la balise ETag :
ETag :”39001d-1762a-50bf790757e00”
La séquence d'accès suivante est la suivante :
- Navigateur : Hé, j'ai besoin du fichier jquery.min.js. Y a-t-il quelque chose qui ne correspond pas à la chaîne "39001d-1762a-50bf790757e00"
- Serveur : (vérifiez ETag...)
- Serveur : Hey, la version que j'ai ici c'est aussi "39001d-1762a-50bf790757e00", tu es déjà la dernière version
- Navigateur : OK, vous pouvez alors utiliser le cache local
Comme Last-modified, ETag résout le problème de comparaison des versions de fichiers. C'est juste que le niveau d'ETag est supérieur à Last-Modified.
Balises supplémentaires
Les balises de mise en cache ne cessent jamais de fonctionner, mais nous avons parfois besoin d'un certain contrôle sur ce qui a été mis en cache.
l Cache-control : public signifie que la version mise en cache peut être reconnue par les serveurs proxy ou d'autres serveurs intermédiaires.
l Cache-control : privé signifie que ce fichier est différent pour différents utilisateurs. Seul le navigateur de l'utilisateur peut mettre en cache, les serveurs proxy publics n'autorisent pas la mise en cache.
l Cache-control : no-cache signifie que le contenu du fichier ne doit pas être mis en cache. Ceci est très utile dans les résultats de recherche ou de changement de page, car le contenu correspondant changera pour la même URL.
- Actualisation du cache du navigateur
Entrez l'URL dans la barre d'adresse et appuyez sur Entrée ou cliquez sur le bouton Aller
Le navigateur obtient les données de la page Web avec la moindre requête, et le Le navigateur utilisera le cache local directement pour tout le contenu qui n'a pas expiré, réduisant ainsi les requêtes adressées au navigateur. Par conséquent, les balises Expires et max-age ne sont valides que pour cette méthode.
Appuyez sur F5 ou sur le bouton d'actualisation du navigateur
Le navigateur ajoutera la négociation de cache nécessaire à la requête, mais ne permettra pas au navigateur d'utiliser directement le cache local, il peut faire Last-Modified , ETag fonctionne, mais cela n'a aucun effet sur Expires.
Appuyez sur Ctrl+F5 ou appuyez sur Ctrl et cliquez sur le bouton d'actualisation
Cette méthode consiste à forcer l'actualisation et à toujours lancer une nouvelle requête sans utiliser de cache.
Cache CDN
Une fois le cache local du navigateur expiré, le navigateur lancera une requête au nœud périphérique CDN. Semblable à la mise en cache du navigateur, les nœuds périphériques CDN disposent également d'un mécanisme de mise en cache.
Inconvénients de la mise en cache CDN
L'effet de déchargement du CDN réduit non seulement le délai d'accès de l'utilisateur, mais réduit également la charge sur le site d'origine . Mais ses défauts sont également évidents : lors de la mise à jour du site Web, si les données sur le nœud CDN ne sont pas mises à jour à temps, même si l'utilisateur utilise Ctrl + F5 dans le navigateur pour invalider le cache du navigateur, le nœud Edge CDN ne se synchronisera pas. les dernières données. Provoque des exceptions d’accès des utilisateurs.
Stratégie de mise en cache CDN
Les stratégies de mise en cache des nœuds périphériques CDN varient d'un fournisseur de services à l'autre, mais elles suivent généralement le protocole standard http et définissent les données du nœud périphérique CDN via le champ Cache-control: max-age dans la réponse http. en-tête.
Lorsque le client demande des données au nœud CDN, le nœud CDN déterminera si les données mises en cache ont expiré. Si les données mises en cache n'ont pas expiré, les données mises en cache seront renvoyées directement au client ; Le nœud CDN enverra les données mises en cache à la source. Le site émet une demande de retour à l'origine, extrait les dernières données du site source, met à jour le cache local et renvoie les dernières données au client.
Les fournisseurs de services CDN fournissent généralement plusieurs dimensions basées sur le suffixe de fichier et le répertoire pour spécifier la durée du cache CDN afin de fournir aux utilisateurs une gestion du cache plus raffinée.
Le temps de cache CDN aura un impact direct sur le « taux de retour ». Si le temps de cache CDN est court, les données sur le nœud périphérique CDN échoueront souvent, ce qui entraînera des retours fréquents à l'origine, augmentant la charge sur le site d'origine et augmentant également le délai d'accès si le temps de cache CDN est trop long ; , les mises à jour des données se produiront. Le problème du temps lent. Les développeurs doivent ajouter des entreprises spécifiques pour effectuer une gestion spécifique du temps de cache des données.
Actualisation du cache CDN
Les nœuds périphériques CDN sont transparents pour les développeurs, par rapport à l'actualisation forcée du navigateur Ctrl+F5 si le navigateur est local. Si le cache n'est pas valide, les développeurs peuvent vider le cache du nœud périphérique CDN via l'interface « actualiser le cache » fournie par le fournisseur de services CDN. De cette manière, les développeurs peuvent utiliser la fonction « Actualiser le cache » pour forcer l'expiration du cache de données sur le nœud CDN après la mise à jour des données, garantissant ainsi que le client peut extraire les dernières données lors de l'accès.
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!