Comment effacer le cache du navigateur lors du téléchargement de l'image avec le même nom de fichier, en php?
J'ai une liste d'éléments, qui contient également une vignette de l'image. Parfois j'ai besoin de changer la miniature de l'image, mais conserver le nom de fichier de la même. Est-il un moyen pour forcer le navigateur à télécharger la nouvelle image téléchargée, au lieu de s'emparer de l'un à partir de la mémoire cache du navigateur?
C'est très pertinent quand les gens de mettre à jour leurs avatars, ce qui provoque de la confusion pour certains utilisateurs, qui n'arrête pas de voir leur ancien avatar, jusqu'à ce qu'ils effacez le cache du navigateur, ou de redémarrer le navigateur.
source d'informationauteur | 2010-06-29
Vous devez vous connecter pour publier un commentaire.
Ajoutez un numéro unique à la fin de l'image src
ie
de le faire uniquement sur la forme de la mise à jour avatar
fonctionne pour moi
btw, cela fonctionne bien pour forcer les mises à jour d'autres fichiers statiques
à savoir html, css fichiers est
Vous pouvez utiliser la date de modification du fichier:
lorsque le fichier est modifié effacer le cache du client
Vous pouvez invalider le cache pour l'ensemble d'une page en modifiant le les en-têtes:
Lors de l'envoi de l'image, assurez-vous de ne pas envoyer
Expires
en-tête. Également envisager l'envoi de ce cache-tête:Cela rendra le navigateur, demandez à votre serveur pour l'image à chaque fois. Regarder pour un Si-Modified-since en-tête de la demande; si l'image n'est pas modifiée, répondez avec un 304 code HTTP.
Cette ensemble de la procédure (must-revalidate, Si-Modified-since, 304 réponse), il sera possible pour le navigateur de mettre en cache le contenu de l'image, mais en même temps, demandez à votre serveur si le fichier a été modifié.
Un autre, peut-être plus simple, la solution est de définir un
Expires
en-tête d'un court laps de temps dans l'avenirpar exemple une dizaine de minutes, et d'informer l'utilisateur de dix minutes de retard. Cela permettra d'accélérer la plupart du chargement de la page car il n'y a pas besoin de faire une requête HTTP à l'image.Images mises en cache sont également invalidé le manuel de l'actualisation de la page (touche F5 dans le navigateur). Cela peut être simulé à l'aide de Javascript la méthode de localisation.reload() de feu sur le corps de la charge. Pour éviter perpétuel de rechargement, ce qui peut avoir lieu qu'une seule fois. Lorsque l'utilisateur télécharge un nouveau avatar, le ReloadPending demande est constamment dans sa session et il est réinitialisé lorsqu'il a été répondu.
Recharger la page entière après avatar télécharger entraîne la page de scintillement, mais ce n'arrive qu'une fois, qui, je crois, est acceptable.
J'ai découvert que l'une des meilleures façons de le faire, c'est d'avoir la même URL pour le téléchargement et l'affichage d'une image (ou de REPOS).