Qu'est-ce qu'une réponse 304 non modifiée ?
Le code de réponse du serveur HTTP 304 Not Modified indique que la ressource demandée n'a pas été modifiée depuis la dernière fois qu'elle a été chargée, ce qui signifie qu'il n'est pas nécessaire de la transférer à nouveau. Pour les navigateurs, cela signifie que la version mise en cache de la ressource peut être affichée à l'utilisateur. Pour les robots d'exploration, tels que Googlebot, cela signifie qu'il n'est pas nécessaire d'explorer à nouveau la page, car elle n'a pas été modifiée.
Comment ça marche
Voici une explication simple du fonctionnement de la réponse 304 Not Modified :
-
Demande initiale Lorsque le client (navigateur ou robot d'exploration) demande une ressource au serveur web pour la première fois, le serveur envoie la ressource demandée avec un code HTTP 200 OK, ainsi que son code de hachage, appelé ETag. Le client enregistre également l'heure à laquelle il a demandé la page/ressource.
-
Requêtes ultérieures Lorsque le client demande à nouveau la ressource, le serveur vérifie les en-têtes
If-None-Match
et/ouIf-Modified-Since
du client. C'est ce qu'on appelle une requête HTTP conditionnelle.If-None-Match
contient l'ETag (code de hachage du contenu). S'il correspond à la valeur du serveur, cela signifie que le contenu n'a pas changé et qu'il n'est pas nécessaire de le charger à nouveau (lorsque le contenu change, son code de hachage change également).If-Modified-Since
contient la date et l'heure auxquelles le client a demandé le contenu pour la dernière fois. Si le serveur constate que le contenu n'a pas changé depuis cette date, il n'est pas nécessaire d'envoyer la ressource au client.
-
Réponse du serveur Dans les deux cas, si le contenu n'a pas changé, le serveur répond par le code HTTP 304.
Lorsque les deux options If-None-Match
et If-Modified-Since
sont utilisées, If-None-Match a
la priorité sur If-Modified-Since
.
Comportement des navigateurs et des robots
Lorsque le navigateur reçoit le code HTTP 304 Not Modified du serveur, il affiche la version mise en cache à l'utilisateur, ce qui en fait l'un des codes de redirection côté client. Pour les robots d'indexation, recevoir une réponse 304 signifie qu'ils peuvent éviter de télécharger à nouveau le même contenu, ce qui permet d'économiser de la bande passante et des ressources.
Pourquoi le code de réponse 304 est-il important ?
Pour les petits sites web, les avantages de la mise en cache fournis par le code HTTP 304 peuvent ne pas être aussi importants. En revanche, pour les sites de grande taille, le code de réponse 304 offre des avantages substantiels :
- Optimisation des performances En exploitant le contenu mis en cache, les navigateurs peuvent charger les pages plus rapidement, ce qui améliore l'expérience globale de l'utilisateur.
- Gestion du budget de cra wl Pour les grands sites, la gestion du budget de crawl est cruciale. Le robot d'exploration de Google ne recompose pas les pages qui n'ont pas été modifiées, ce qui lui permet de se concentrer sur les contenus nouveaux et mis à jour. Il peut ainsi se concentrer sur les contenus nouveaux et mis à jour, ce qui permet de s'assurer que le contenu frais est indexé plus efficacement.
Bonnes pratiques pour l'utilisation de 304 Not Modified
- Définir des en-têtes de cache appropriés Assurez-vous que votre serveur est configuré pour envoyer les en-têtes
ETag
etLast-Modified
appropriés. - Surveillez l'efficacité de la mise en cache Vérifiez régulièrement les journaux de votre serveur pour voir à quelle fréquence les réponses 304 sont émises et ajustez les politiques de mise en cache si nécessaire.
- Optimiser la diffusion du contenu Utiliser des réseaux de diffusion de contenu (CDN) qui prennent en charge des mécanismes de mise en cache efficaces pour réduire la latence et améliorer les temps de chargement.
Pour des informations plus détaillées sur les codes d'état HTTP et les meilleures pratiques en matière de performances web et de référencement, consultez des sources faisant autorité telles que le Mozilla Developer Network (MDN) et Google's Web Fundamentals.