2011-06-23 2 views
1

J'ai un filtre d'action ASP.NET MVC qui définit l'en-tête de contrôle de cache de la réponse. Tout fonctionne bien sauf si je le publie sur le serveur web.Changements au contrôle du cache ASP.NET sur le serveur

Quand je suis en cours d'exécution à travers localhost-je obtenir les éléments suivants:

Cache-Control:public, max-age=172800 
Connection:Close 
Content-Length:15057 
Content-Type:application/pdf 
Date:Thu, 23 Jun 2011 17:09:09 GMT 
Server:ASP.NET Development Server/9.0.0.0 
X-AspNet-Version:2.0.50727 
X-AspNetMvc-Version:2.0 

Lors de l'exécution par le site en direct

Cache-Control:public 
Content-Length:15057 
Content-Type:application/pdf 
Date:Thu, 23 Jun 2011 17:09:45 GMT 
Server:Microsoft-IIS/6.0 
X-AspNet-Version:2.0.50727 
X-AspNetMvc-Version:2.0 
X-Powered-By:ASP.NET 

Donc, pour une raison quelconque max-age est effacé dehors et je ne peux pas IT out. La seule différence que je peux comprendre est que le site de développement passe par le serveur web de Cassini et que le live est IIS, alors peut-être que IIS efface le max-age?

Que dois-je faire pour conserver la valeur max-age dans l'en-tête de contrôle de cache?

EDIT: Voici une photo du nœud system.webServer dans le web.config au cas où il pourrait y avoir quelque chose à regarder.

web.config

+0

Avez-vous vérifié l'onglet En-têtes HTTP dans IIS? – Jay

+0

@Jay Je viens de le modifier pour expirer dans deux jours dans l'onglet en-têtes HTTP, mais toujours pas de changement dans les en-têtes de réponse. Pourrait-il être mon web.config? Peut-être que HttpModule est en train de jouer avec les en-têtes? – Jose

+0

J'en doute. Ne peut pas être 100% sur ce point, mais IIS est le dernier à toucher les réponses à mesure qu'elles sortent. À partir de ce point, un nœud de serveur/réseau externe peut-il jouer avec les en-têtes? – Jay

Répondre

1

Trouvez et vérifiez la < clientCache/> ligne dans votre fichier de configuration. Essayez de définir cacheControlMode à UseMaxAge si ce n'est pas déjà le cas.

Par exemple: < clientCache cacheControlMode = "UseMaxAge" cacheControlMaxAge = "10:00:00"/>

+0

a fait cela, mais pas de chance. De plus, il semble que seul IIS 7+ supporte la directive clientcache http://www.iis.net/ConfigReference/system.webServer/staticContent/clientCache – Jose

+0

Je suis désolé - je n'ai pas remarqué que vous utilisiez IIS6. Vous l'avez probablement déjà essayé, mais si ce n'est pas le cas, essayez de définir CacheControlMaxAge dans IIS comme indiqué ici: http://msdn.microsoft.com/en-us/library/ms524623(v=vs.90).aspx. J'ai essayé et vérifié dans Fiddler et ça marche. A part ça, je n'ai pas d'autres idées. – sshah

+0

Comment exactement puis-je modifier la métabase? jamais fait ça. – Jose

Questions connexes