L’en tête http if-modified-since
Classé dans : Référencement
Vous allez me dire c’est quoi ce charabia ? En résumé l’en tête http if-modfied-since est utilisé par le robots d’indexation de Google pour savoir si la page a été modifiée depuis sa dernière visite.
Comment ça fonctionne ?
Pour afficher une page web il faut que le navigateur envoie une requête http au serveur. Le serveur analyse cette requête et y répond en conséquence.
L’en tête if-modified-since ajoute une condition à la requête en lui demandant de vérifier la date de dernière modification du fichier avec la date donné en arguments de if-modified-since. Si cette dernière est plus récente que la date de dernière modification cela signifie que le fichier n’a pas été modifier le serveur renvoie alors un code 304 ce qui indique que le fichier peut être récupéré à partir du cache. Dans le cas contraire le serveur renvoie un code 200 et le fichier sera téléchargé.
Pourquoi google utilise t’il if-modified-since ?
La réponse est très simple, Google n’aime pas gaspiller du temps et de la bande passante. En effet, savoir immédiatement qu’une page n’a pas été modifiée lui permet de ne pas la réenregistrer dans son cache, il peut alors immédiatement passé à la page suivante et gagne ainsi du temps.
Qu’est ce que ça apporte en terme de référencement ?
A priori, l’en tête if-modified-since permet à Google de mieux indexer les pages des sites qu’il visite.
Le robots d’indexation de google met souvent à jour son cache pour les pages ayant des modifications régulières par contre le cache des pages moins actives ne pourra pas facilement bénéficier d’un rafraichissement.
On peut donc supposer que configurer son serveur de manière à ce qu’il gère correctement les requêtes if-modified-since facilitera la mise à jour du cache pour les pages qui n’ont pas souvent de modification.
De plus vous économisez votre propre bande passante car vous n’imposez pas le téléchargement systématique de vos fichiers.
Le cas des fichiers dynamiques.
Lorsque vous envoyez un fichier sur votre serveur celui-ci enregistre sa date de dernière modification et c’est par rapport à cette date que sera fait la vérification avec celle fournis par if-modified-since. Par conséquent on peut entrevoir un problème. En effet, si pour vos pages statiques (programmées en HTML) cela ne posera aucun soucis, pour vos pages dynamiques (php ou autres..) c’est une autre histoire. Le principe d’une page dynamique est d’être mises à jour sans avoir à toucher son code. Le serveur n’a donc aucun moyen de savoir que cette page a été mise à jour, il ne changera donc pas la date de dernière modification et la requête if-modified-since se basera sur une date erronée.
Pour palier à ce problème Il faut donc prévoir un code php capable de repérer la requete if-modified-since, d’en extraire la date fournis, de la comparer avec la date de dernière modification réelle (que vous devrez fournir vous même par exemple à l’aide d’une base de données), et de renvoyer selon le cas soit un code 304 soit un code 200 dans le header.
Comment savoir si mon serveur accepte l’en tête if-modified-since ?
Vous pouvez tester votre serveur avec ce site il suffit d’indiquer l’adresse de votre site, une date (au bon format) et de cliquer sur check page.
si vous obtenez un code 200, alors que votre page n’avait pas été modifiée depuis la date que vous avez indiquée, c’est que votre serveur ne gère pas if-modified-since. Si vous obtenez un code 304 c’est qu’il le gère.
Dans le premier cas vous pouvez vérifier la version de votre serveur si votre serveur est en version inférieur à 1.1 alors il ne pourras jamais gérer if-modified-since sinon cela peut vouloir dire que le module qui gère if-modified-since n’est pas activé..
Etant chez ovh je fait malheureusement parti du dernier cas et je n’ai pas encore trouvé de solution pour activer le module en question (surtout que je ne sais pas encore lequel c’est).
Retrouvez d’autres conseil pour optimiser votre site
Tags : http, if-modified-since
- Permalien
- maniT4c
- 15 oct 2008 5:44
- Commentaires (5)


le 17 octobre 2008 à 14:52
Bonjour,
Tous les serveurs gérant le protocole HTTP/1.1 sont théoriquement capables de gérer les entêtes comme if-modified-since.
Apache, par exemple, les gère très bien: enregistrez un fichier avec l’extension .html par exemple et regardez les entêtes renvoyées (avec FireBug sous FireFox par exemple, onglet « Réseau »).
Les fichiers dynamiques (php, asp et consorts) n’ont, eux, pas d’entête « Last-Modified ». Ils renvoient toujours un code 200 (OK), donc Google et les autres moteurs les téléchargeront à chaque passage.
Il faudrait en effet se pencher sur les solutions permettant, non pas de retirer ces entêtes, mais plutôt de les forcer, pour que les moteurs ne gaspillent pas votre bande passante.
Cordialement
le 29 novembre 2008 à 20:59
Les fichiers dynamiques (php, asp et consorts) n’ont, eux, pas d’entête “Last-Modified”. Ils renvoient toujours un code 200 (OK), donc Google et les autres moteurs les téléchargeront à chaque passage.
le 13 février 2009 à 18:07
Merci pour ces explications et pour le site de vérification, c’est très pratique et facile ! Niveau référecement je trouve ça assez interressant comme développement
Ravie d’être tombée sur ton site, c’est plein de très bons conseils.
le 23 mars 2009 à 17:27
Excellente page, riche en informations précises.
A + !
le 19 janvier 2010 à 5:48
Merci vraiment, je ne savait pas du tout que les mise à jours et les modifications de pages étaient vérifiable.
Perso, je suis chez 1and1 et ça à l’aire bon.