J'ai un script qui, en utilisant plusieurs variables de chaîne de requête fournit une image. J'utilise également la réécriture d'URL dans IIS 7.5.Images de cache fournies par le script
Donc, les images ont une URL comme ceci: http://mydomain/pictures/ajfhajkfhal/44/thumb.jpg ou http://mydomain/pictures/ajfhajkfhal/44.jpg
C'est réécrite à: http://mydomain/Picture.aspx?group=ajfhajkfhal&id=44&thumb=thumb.jpg ou http://mydomain/Picture.aspx?group=ajfhajkfhal&id=44
I a ajouté des règles de mise en cache pour IIS pour mettre en cache des images JPG quand ils sont demandé. Cela fonctionne avec mes images qui sont des images réelles sur le disque. Lorsque les images sont fournies via le script, elles sont toujours demandées via le script, sans être mises en cache.
Les images ne changent pas si souvent, donc si le cache est au moins conservé pendant 30 minutes (ou jusqu'au changement de fichier), ce serait mieux. J'utilise .NET/C# 4.0 pour mon site Web. J'ai essayé de définir plusieurs options de cache en C#, mais je n'arrive pas à trouver comment mettre en cache ces images (côté client), alors que mes images statiques sont mises en cache correctement. J'utilise les options suivantes pour mettre en cache l'image côté client, où 'nom_fichier' est le nom de fichier physique de l'image (sur le disque).
context.Response.AddFileDependency(fileName);
context.Response.Cache.SetETagFromFileDependencies();
context.Response.Cache.SetLastModifiedFromFileDependencies();
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetExpires(DateTime.Now.AddTicks(600));
context.Response.Cache.SetMaxAge(new TimeSpan(0, 5, 0));
context.Response.Cache.SetSlidingExpiration(true);
context.Response.Cache.SetValidUntilExpires(true);
context.Response.ContentType = "image/jpg";
EDIT 2 Merci de le souligner, ce fut en effet une erreur stupide;). Je l'ai changé à 30 minutes à partir de maintenant (DateTime.Now.AddMinutes (30)).
Mais cela ne résout pas le problème. Je pense vraiment que le problème réside dans Firefox. J'utilise Firebug pour suivre chaque demande et je pense que je fais quelque chose de fondamentalement faux. Les images normales (mises en cache et statiques) donnent un code de réponse "304 (non modifié)", alors que ma page renvoie toujours "200 (OK)".
alt text http://images.depl0y.com/capture.jpg
Hmm, le fichier est alors côté serveur mis en mémoire cache, je suppose, mais j'aimerais les images pour être mises en cache client côté (si activé dans le navigateur), mais maintenant il ne semble que pour mettre en cache les images statiques. –
@Wim - Vous pouvez utiliser la mise en cache côté client en spécifiant des en-têtes http. Cela peut être fait avec ASP.NET facilement, j'ai édité ma réponse pour vous montrer comment. – Venemo
@Venemo, c'est ce que j'ai essayé. Mais de toute façon, mon Firefox continue de recharger toutes les images, alors que je suis aux paramètres de cache par défaut. Quand je regarde environ: cache et vérifie si mes images sont en cache, elles sont là. Je pense que Firefox recharge toujours ces images, même si elles sont mises en cache. J'ai édité ma question pour montrer les options que j'utilise pour mettre en cache le côté client. Je pense que c'est en quelque sorte une chose de navigateur ou quelque chose. –