2008-11-28 10 views
0

Hier, j'ai essayé de prendre au sérieux la mise en cache à juste titre de certaines pages générées par PHP (pensez à "Articles avec commentaires"). Gros échec.Mise en cache HTTP, bizarrerie des navigateurs et tout le reste!

Longue histoire courte: Je mets l'en-tête ETag, définissez la dernière modification d'un et vérifier côté serveur toutes les demandes de l'article du navigateur avec eux pour voir si je peux retourner un 304.

Le problème est simple: navigateur (essayé avec FF 3, jusqu'à présent), après 1 ou 2 recharges, s'arrête soudainement de vérifier la fraîcheur de la page et utilise sa copie en cache. Pour ce que j'ai compris, en utilisant ETag et Last-Modified, le navigateur DOIT vérifier avec le serveur à chaque demande (sinon, pourquoi devrions-nous utiliser ETag?).

J'ai aussi essayé de jouer avec Cache-Control ou Expires ... rien. D'une façon ou d'une autre, le navigateur arrête de vérifier, ou ne renvoie pas l'ETag ...

Je suis vraiment frustré ... est-ce que quelqu'un a réglé cette question?

Répondre

3

Vous devez toujours définir "Expire" si vous souhaitez que le navigateur soit revérifié. Firefox3 do check est basé sur l'en-tête "Expires". S'il manque, firefox3 maquillera une date d'expiration pour la performance.

Référence, Difference betwwen firefox and ie cacheing

-2

Vous pouvez vérifier les entrées en cours de cache FF à

about:cache 

Cela vous montrera la expirey date FF stockés à chaque entrée de cache.