Qu’est-ce qu’un status code 304 « Not-Modified » ?

Status code 304 = Not-Modified

De tous les codes retournés par les serveurs, le code 304 est celui qui est à la fois le moins connu et le moins compris. Cette incompréhension résulte d’une mécanique qui se décompose en plusieurs étapes :

  1. L’appel d’une page ou ressource web ;
  2. La réception de la page ou la ressource demandée accompagnée d’une date de modification (via l’entête « Last-Modified ») ;
  3. Un nouvel appel de la même page ou ressource, mais cette fois accompagné de la date de modification reçue (via l’entête « If-Modified-Since ») ;
  4. Le serveur en charge de la réponse, sera en mesure de confronter la valeur de la date communiquée dans la demande (if-modified-since) et la date de dernière modification connue de la page ou ressource (Last-Modified).
    • Si aucun changement n’a été réalisé depuis la dernière exploration, le serveur sera en mesure de renvoyer un code 304 (« Not-Modified ») afin d’informer qu’aucune modification n’a été réalisée. Le grand intérêt de cette réponse 304 réside dans la vitesse de réponse, mais également l’absence de contenu à renvoyer.
    • A l’inverse, si un changement a été effectué sur la page ou ressource, le serveur sera en mesure de renvoyer un code 200 (« page trouvée ») accompagné de la date de la dernière modification (« Last-Modified ») et le nouveau contenu.

Retourner un code 304, c’est être en mesure de gérer l’entête « If-Modified-Since »

Complètement sous le radar, l’entête « if-modified-since » est pourtant, depuis plus de 20 ans, une recommandation de la part de Google… Cette recommandation, toujours présente, est restée intacte, la voici :

Assurez-vous que votre serveur Web accepte l’en-tête HTTP If-Modified-Since. Cet en-tête demande à votre serveur Web de nous indiquer si le contenu de votre site a évolué depuis sa dernière exploration par Google. Cela permet de limiter la consommation en bande passante et l’exploitation inutile d’autres ressources informatiques.

https://support.google.com/webmasters/answer/35769?hl=fr

La 304 est un outil très puissant…

Correctement utilisé, le statut code 304 s’avère une arme redoutable pour accélérer les temps de chargement utilisateurs et robot d’exploration de type Googlebot. D’ailleurs les CDN en charge de la mise en cache des ressources pour les internautes utilisent systématiquement la mécanique de gestion des 304 pour accélérer le temps de chargement des pages et également économiser de la bande passante.

Mais un outil oublié des technologies modernes…

En effet, la façon de construire un site web à complètement changé entre le contenu statique du début d’internet et les contenus dynamiques proposés par les CMS modernes de type WordPress basé sur un stockage en base de données de l’information.

La plupart des technologies actuelles s’affranchissent de mémoriser la date des modifications apportées à un contenu. Aussi, la quasi-totalité des informations échangées sur le web de nos jours ne dispose pas de date de modification et par conséquent, il n’est pas possible d’utiliser les entêtes « if-modified-since » et ensuite obtenir un status code 304.

Heureusement, il existe des modules WordPress qui permettent de gérer correctement les en-têtes « last-modified » et  « If-modified-since »

Nous ne pouvons que vous encourager à activer ce type d’extension afin de profiter de toute la puissance de la mécanique 304.


Rédigé par Florian Bessonnat, le 18/06/2020
Enseignant Référencement naturel et e-commerce – Université de Genève
LinkedIn: https://www.linkedin.com/in/florian-bessonnat-9a6a3a3/