Aller au contenu

Cache des navigateurs


Yhann

Sujets conseillés

Bonjour,

Je viens de faire des tests avec Firefox 3, IE7 et Safari PC sur le chargement d'une page PHP.

Cette page PHP affiche des données issues d'une base MySQL.

Je charge cette page dans chacun des 3 navigateurs précités. Cette page se retrouve donc dans leur mémoire cache (réglages du cache par défaut sur ces navigateurs, lors de mon test).

Je change un seul caractère dans la base MySQL, et j'affiche à nouveau ma page PHP (la même qu'auparavant, et le contenu ne diffère donc que d'une seule lettre).

Sans réactualiser l'affichage de la page dans les navigateurs (je vais sur une autre page, puis reviens, via un lien, sur la précédente), tous m'ont montré la page à jour (avec le changement de lettre).

J'en déduis que les navigateurs sont aujourd'hui capables de déterminer précisément lorsqu'une page a été mise à jour, non ?

Comment fonctionnent-ils exactement ? Impossible de trouver l'info sur le web. Ou du moins, on trouve tout et son contraire (le navigateur compare la taille du fichier, ou sa date, etc.)

La taille du fichier, dans mon test, ne change pas (même nombre d'octets). Je penche donc plutôt sur la date.

Et du coup, sur une page PHP affichant des actualités journalières, à quoi bon envoyer une entête d'expiration de cache de 24h, puisque les navigateurs sont capables, par eux-même, de trouver tout seul si la page doit être rechargée ou si la version en cache est toujours ok.

J'imagine qu'un truc m'échappe, et je me disais que, peut-être, vous aurez une idée.

Merci.

Lien vers le commentaire
Partager sur d’autres sites

Bein oui, je veux bien connaître tes contres-exemples.

Par contre, je ne parle pas des fichiers CSS et Javascript attachés (j'en ai parlé longuement dans un précédent POST).

Mon test ne porte que sur un fichier php, et était attaché à savoir si le navigateur servait bien la page mise à jour plutôt que la page en cache.

Lien vers le commentaire
Partager sur d’autres sites

Hello,

cela dépend surtout de quelques entêtes HTTP particuliers : Last-Modified, ETag, Expires, Cache-Control et Pragma. Chacun ayant plus ou moins son rôle, expliqué dans les différentes RFC du protocole HTTP.

Par défaut PHP n'en envoie aucun, ce qui force la plupart des navigateurs à télécharger l'intégralité de la page en permanence, même si celle ci n'a pas été modifiée. Et pour peu que tu utilises les sessions PHP (avec les paramètres par défaut) alors toute mise en cache sera complètement désactivée.

Quand aux fichiers statiques (css, js, images, etc) gérés directement par Apache, par défaut ils ont l'entête Last-Modified et ETag mais pas les autres, ce qui conduit à un résultat "aléatoire" : soit le navigateur demande en permanence au serveur si le "fichier" a changé, soit il ne le fait que de temps en temps ; il me semble que Firefox ne redemande validation au serveur que toutes les X minutes, alors qu'un IE 6 va systématiquement redemander.

(je n'ai pas fait de test depuis longtemps, donc je ne suis pas certain du comportement de chaque navigateur pour ce cas précis)

Il y a pas mal de techniques à mettre en place et de règles à respecter que ce soit coté "statique" (Apache) et coté "dynamique" (PHP) pour que tout cela fonctionne au mieux. Mais c'est très rarement employé, depuis le haut débit on a tendance à faire retélécharger tout et n'importe quoi à l'internaute.

Lien vers le commentaire
Partager sur d’autres sites

  • 1 year later...

Mes contre-exemples ne concernaient que ces fichiers ;o)

Bonjour ! Effectivement, j ia la meme exigence de " mise à jour instantanée " pour mon site ... Cad Si je fais une modif à 20h00, j 'aime qu'elle soit captée avant que ces braves navigateur internet décide ( aléatoirement ? ! ) enfin de vérifier( avant 20h03) .. Chez moi , ces modifs apparaissent souvent de suite mais parfois, cela met des plombes , alors donc je vide le cache navigateur et paf les modifs sont là ...Mais Y a t il une commande pour forcer la vérification par le navigateur de l'internaute visiteur des dates du site en visite ? ou encore y a til une commande qui demande de vider le cache du navigateur du visiteur ? (abusons ! )) ou y a t il une commande qui ordonne au navigateur de vérifier immédiatement les modif du site ? ...

Je n crois pas que ce soit trop exigeant d espérer avoir une interactivité dynamique sur un site internet ..

voici celui que je masterise : www.combzrecord.co.cc et qui, par sa dynamique , aimerait avoir le controle sur le navigateur .. .

Si je met en ligne une des créations qui est annoncée comme bientôt en ligne et que je lai mise en ligne et que le visiteur de la veille vient et qu il ne peut pas voir les nouvelles mises en ligne car son navigateur n a pas vidé le cache, alors je trouve ça nul ...

Qui sait ?

viddac

Lien vers le commentaire
Partager sur d’autres sites

moi j ai fait ça ... test OK mais c est peut etre que parce que ce coup si le navigateur à vérifier les mmodifs ... En tout cas dans la théorie, cette commende interdit au navigateur de s appuyer sur le memoire cache pour charger le site ...

C est peut etre dur pour ceux qui ont un réseau lent ....

argh ! je sais plus si c'est si adapté que ça comme commande !

Vous l utilisez vous ?

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...