52 votes

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

J'utilise déjà la mise en cache de la 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 Réponse 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 de la réponse que je suis servant de mon code :

Response.Expires
Response.ExpiresAbsolute
Response.CacheControl

ou alternativement

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

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

77voto

Marek Points 5077

Je l'ai trouvé :

J'ai besoin de spécifier un 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

31voto

Drew Noakes Points 69288

Si vous voulez le faire à partir du code pour une ressource que vous retournez (c'est-à-dire pas 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 j'ai pensé que d'autres personnes pourraient aimer cette réponse car elle est liée aux API que vous indiquez dans le texte de la question originale.

2voto

dariol Points 1450

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X