2009-11-22 2 views
3

Nous créons une grande application web de back-office sécurisée dans ASP.NET. Tous les accès au site sont sur des connexions https, et nous aimerions soit désactiver la mise en cache pour les pages ou mettre les caches à expiration rapidement.Cache sélectivement les fichiers .js et .png sur https?

Toutefois, le site utilise un certain nombre d'images et de fichiers/bibliothèques javascript volumineux. Existe-t-il un moyen de mettre en cache sélectivement certains fichiers ou types de fichiers afin qu'ils ne soient pas rechargés tout le temps?

+0

http://stackoverflow.com/questions/1355129/http-what-are-the-best-headers-for-rarely-changed-images –

Répondre

0

Après quelques recherches sur Google plus, il semble que je pourrais juste besoin de créer un web.config dans mes dossiers Scripts et Images (et tous les autres que je voudrais mettre en cache):

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
    <staticContent> 
     <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" /> 
    </staticContent> 
    </system.webServer> 
</configuration> 

Cela vous semble-t-il exact? Ai-je manqué quelque chose?

+1

Cela fonctionne probablement bien sur HTTP, mais n'a aucun effet sur HTTPS le fait? En utilisant Fiddler, je peux voir que les fichiers JS sont récupérés chaque fois qu'on y accède même avec le fichier web.config ci-dessus dans mon dossier scripts. – MarkD

0

S'il vous plaît regarder dans les en-têtes du genre:

  • Expire: Lun 23 novembre 2009 07:30:00 GMT
  • Cache-Control: public, max-age = 86400

Vous devriez lire, ou écrémé, Caching in HTTP. Avec ASP.NET MVC, vous voudrez parer vos actions de contrôleur avec OutputCacheAttribute. Par exemple:

[OutputCache(Duration = 24*60*60)] // Cached for 1 day 
public ActionResult Index() { return View(); } 

Dans ASP.NET, vous pouvez utiliser la directive OutputCache dans votre fichier ASPX:

<%@ OutputCache Duration="86400" %> 
+1

Nous faisons cela pour les fichiers aspx. Nous essayons de mettre en cache les images et d'inclure uniquement les fichiers javascript (mais pas les fichiers aspx eux-mêmes). –

+0

Il vous suffit ensuite de définir ces en-têtes selon vos besoins sur votre serveur Web. Qu'est-ce que vous utilisez? IIS? Apache? –

+0

IIS ... Je pense que je viens de trouver la même réponse via Google ... posté une réponse ici, n'était pas sûr si je manquais quelque chose. –

0

Vous devez utiliser le modèle "futur futur". Sans utiliser le cache de sortie, voici comment vous pouvez le faire. (Personnellement, je pense que cela ressemble plus agréable que la mise en cache de sortie.)

HttpContext.Response.ExpiresAbsolute = DateTime.Now.AddYears(5); 

Bien sûr, vous pouvez changer le DateTime à ce que vous voulez.

Questions connexes