web-dev-qa-db-fra.com

Comment spécifier l'en-tête d'expiration HTTP? (ASP.NET MVC + IIS)

J'utilise déjà la mise en cache de sortie dans mon application ASP.NET MVC.

Vitesse de la page me dit de spécifier l'expiration du cache HTTP pour les CSS et les images dans l'en-tête de réponse.

Je sais que l'objet Response contient certaines propriétés qui contrôlent l'expiration du cache. Je sais que ces propriétés peuvent être utilisées pour contrôler la mise en cache HTTP pour la réponse que je suis servant à partir de mon code:

Response.Expires
Response.ExpiresAbsolute
Response.CacheControl

ou bien

Response.AddHeader("Expires", "Thu, 01 Dec 1994 16:00:00 GMT");

La question est comment définir l'en-tête Expires pour les ressources qui sont servies automatiquement, par exemple images, css et autres?

52
Marek

Je l'ai trouvé:

J'ai besoin de spécifier le cache client pour le contenu statique (dans web.config).

<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlCustom="public" 
      cacheControlMaxAge="12:00:00" cacheControlMode="UseMaxAge" />
    </staticContent>
   </system.webServer>
</configuration>

de http://www.iis.net/ConfigReference/system.webServer/staticContent/clientCache

77
Marek

Si vous voulez le faire à partir du code d'une ressource que vous renvoyez (c'est-à-dire pas d'un fichier statique servi par IIS), il vaut mieux utiliser Response.Cache:

Response.Cache.SetExpires(DateTime.Now.AddYears(1));
Response.Cache.SetCacheability(HttpCacheability.Public);

Je sais que ce n'est pas exactement ce que vous demandez, mais j'ai trouvé cette question via Google et je pense que d'autres pourraient aimer cette réponse car elle est liée aux API que vous montrez dans le texte de la question d'origine.

31
Drew Noakes
2
dariol