Une page d'accueil demande fichiers
Exercice supplémentaire · niveau 2 · NSI (première), chapitre 10 — Interagir sur le Web · Le serveur, de plus près
Énoncé
Une page d'accueil demande fichiers : le document HTML, feuilles de style, scripts et images. Chaque requête coûte ms, et le navigateur en mène de front.
- Estimer le temps de chargement au premier affichage.
- L'utilisateur revient le lendemain ; des fichiers sont encore en cache et seul le document HTML est redemandé. Temps ? Facteur de gain ?
- Le site modifie sa feuille de style, mais les visiteurs continuent de voir l'ancienne. Pourquoi ? Que fait-on couramment pour y remédier ?
Corrigé
1. Les requêtes partent par vagues de : vagues, donc ms. C'est une minoration : le document HTML doit arriver avant qu'on sache quels fichiers demander, ce qui ajoute au moins une vague, et les images lourdes coûtent davantage que la seule latence.
2. Une seule requête, soit ms. Le gain est d'un facteur — et il ne vient d'aucune optimisation du serveur ni du réseau : il vient de requêtes qui n'ont pas lieu.
3. Parce que le cache fait exactement son travail : il a reçu l'instruction de garder style.css pendant, disons, un an, et il le garde. Le navigateur ne redemande pas un fichier qu'il croit valide ; il n'a aucun moyen de savoir qu'il a changé.
Le remède courant consiste à changer le nom du fichier à chaque modification, en y glissant un numéro ou une empreinte :
<link rel="stylesheet" href="/style.css?v=7">
La page demande alors une adresse que le cache ne connaît pas, et le fichier est rechargé. On obtient ainsi les deux propriétés à la fois : un cache très long, donc des pages rapides, et une mise à jour immédiate quand elle est voulue.
Ce que le calcul montre : l'essentiel du temps de chargement d'une page n'est pas passé à transmettre des octets, mais à attendre des allers-retours. C'est pourquoi réduire le nombre de requêtes fait plus que réduire leur taille.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.