la mise en cache des images servi par la servlet
Je suis de servir des images de mon servlet. Le contenu de la réponse est de type image/jpeg. Je trouve que les images demandées ma servlet ne sont pas mis en cache. Comment puis-je obtenir la mise en cache de fichiers de type image demandes sont normalement? J'ai essayé la mise en Cache-Control: public, mais en vain.
OriginalL'auteur akula1001 | 2010-05-20
Vous devez vous connecter pour publier un commentaire.
La valeur par défaut de servlet de servir du contenu statique dans des conteneurs comme Tomcat n'a pas réglé tous les cache-têtes de contrôle. Vous n'avez pas besoin d'écrire une servlet juste pour ça. Il suffit de créer un filtre de ce genre,
Chaque fois que vous voulez ajouter de contrôle de cache, il suffit d'ajouter le filtre sur les ressources en web.xml. Par exemple,
cacheAge
sont le nombre de secondes que vous voulez des trucs à être mis en cache.Cela peut-il filtre utilisé pour les fichiers css et javascript ?
OriginalL'auteur ZZ Coder
Vous devez envoyer à l'
ETag
,Last-Modified
etExpires
en-têtes le long de la réponse. LeETag
représente l'identifiant unique du fichier (généralement composé basé sur une combinaison de nom de fichier, taille du fichier et lastmodified timestamp). LeLast-Modified
représente l'horodatage de la dernière modification du fichier. LeExpires
en-tête indique combien de temps le client est autorisé à conserver le fichier dans le cache. Si le cache a expiré et que leETag
ouLast-Modified
sont disponibles, le client enverra unHEAD
demande de vérifier si le fichier doit être renouvelé. Si non, alors leExpires
va juste être à nouveau reportée en conséquence.Vous pouvez trouver ici un exemple de servlets qui gère tout cela (et le téléchargement reprend et automatique GZIP): FileServlet soutenir reprendre et GZIP
OriginalL'auteur BalusC
Par exemple, si vous souhaitez mettre en cache pour 1 mois:
(c'est dans un
Filter
qui gère le*.jpg
modèle, par exemple)Mais les images doivent être mises en cache par défaut - vérification des filtres et des configurations pour voir si quelque chose n'est pas de réglage les paramètres de cache de manière incorrecte.
OriginalL'auteur Bozho
Ok.. regarde comme la valeur par défaut champs d'en-tête doit activer la mise en cache. J'ai trouvé une solution dans un autre forum. Apparemment, vous devez définir explicitement le contenu, la longueur de la réponse. Me demande pourquoi. Je pensais que le HttpServletResponse ne le ferait que pour nous. De toute façon, il a travaillé comme un charme, et l'image est la mise en cache de bien.
OriginalL'auteur akula1001