2009-07-22 7 views
2

J'ai blobcaching activé sur un site de publication. Pour les utilisateurs authentifiés, la propriété max-age de l'en-tête HTTP Cache-Control est définie correctement en fonction du paramètre de l'élément blobCache dans web.config. Pour les utilisateurs anonymes, elle est définie sur 0. demandes par le navigateur en essayant de voir si une image a changé et affecte négativement les performances. Ceci est un problème uniquement pour les fichiers de la bibliothèque "/ Style".Cache-Control/max-age toujours défini sur 0 pour les utilisateurs anonymes

Il y a quelques mentions de ce problème dans les blogs mais aucune solution trouvée jusqu'à présent. Est-il possible de résoudre ce problème ou de forcer le réglage de cet en-tête par d'autres moyens? J'ai essayé d'implémenter un gestionnaire de HTTP pour faire ceci mais il apparaît toujours comme 0.

Répondre

3

Comment serait-ce si vous définissiez la mise en cache pour l'ensemble du site et ensuite sur la page (s) que vous ne voulez pas les utilisateurs anonymes pour obtenir le contenu en cache vous ajoutez quelque chose le long des lignes de ce dans:

protected override void OnInit(EventArgs e) 
{ 
    if (user.IsAnonymous()) 
    { 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.Cache.SetNoStore(); 
     Response.Cache.SetExpires(DateTime.MinValue); 
    } 
    base.OnInit(e); 
} 

qui produira ceci:

HTTP/1.1 200 OK 
Cache-Control: no-cache, no-store 
Pragma: no-cache 
Content-Length: 15965 
Content-Type: text/html; charset=utf-8 
Expires: -1 
Server: Microsoft-IIS/7.0 
X-Powered-By: ASP.NET 
Date: Mon, 03 Aug 2009 01:07:26 GMT 

cela devrait rendre la page Web ne soit pas mis en cache, mais quelle que soit la mise en cache est appliqué aux images, css, js etc. devraient rester. Si les images ne reçoivent pas d'en-têtes de mise en cache, il semble que vous deviez écrire un gestionnaire http personnalisé pour intercepter la requête de ces images, puis appliquer les en-têtes de mise en cache corrects et définir par page les pages vous ne voulez pas mettre en cache.

+0

Je voudrais définir la mise en cache pour l'ensemble du site, mais cela ne fonctionne pas pour les fichiers de la/Bibliothèque de styles! J'ai "résolu" cela en déplaçant les fichiers là-bas à un emplacement dans le chemin _layouts. Au moins, je peux contrôler la mise en cache via IIS. – ArjanP

Questions connexes