2010-02-03 13 views
132

Vorrei impostare le regole in IIS7 per il caching del contenuto statico nel mio sito Web ASP.NET.Come configurare la cache del contenuto statico per cartella ed estensione in IIS7?

ho visto questi articoli, che dettaglia come farlo utilizzando l'elemento <clientCache /> in web.config:

Client Cache <clientCache> (IIS.NET)
Add Expires or Cache Control Header to static content in IIS (Stack Overflow)

Tuttavia, questa impostazione sembra applicarsi a livello globale per tutti i statica soddisfare. C'è un modo per farlo solo per determinate directory o estensioni?

Per esempio, io possa avere due directory che hanno bisogno di impostazioni di cache separate:

/static/images
/content/pdfs

E 'possibile impostare le regole per l'invio di intestazioni di cache (max-age, expires, ecc.) in base alle estensioni e ai percorsi delle cartelle?

Si prega di notare, Devo essere in grado di farlo via web.config perché non ho accesso alla console di IIS.

risposta

201

È possibile impostare specifici cache-headers per un'intera cartella o nel vostro radice web.config:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <!-- Note the use of the 'location' tag to specify which 
     folder this applies to--> 
    <location path="images"> 
    <system.webServer> 
     <staticContent> 
     <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:00:15" /> 
     </staticContent> 
    </system.webServer> 
    </location> 
</configuration> 

Oppure è possibile specificare questi in un file web.config nella cartella dei contenuti:

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

Non sono a conoscenza di un meccanismo integrato per il targeting di tipi di file specifici.

+1

Grande. Mi consiglieresti un libro su IIS 7? Mi piacerebbe conoscere queste cose. Grazie. – vtortola

+5

@vtortola - non si può sbagliare con il [resource kit IIS7] (: http://www.amazon.co.uk/dp/0735624410), in realtà è abbastanza utile. Il libro [Wrox Pro IIS7] (http://www.amazon.co.uk/dp/0470152532) non è male. TBH Ho imparato principalmente dal sito di riferimento di config di IIS.NET: http://www.iis.net/ConfigReference e dalla ricerca del file 'systemroot% \ system32 \ inetsrv \ config \ applicationhost.config' e relativi amici. – Kev

+6

Qualcuno sa se questo è ricorsivo? per esempio. Se si hanno sottocartelle sotto il percorso delle immagini, verranno memorizzate anche in cache? – StuffandBlah

61

È possibile farlo in base al file. Utilizzare il percorso attributo per includere il nome del file

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <location path="YourFileNameHere.xml"> 
     <system.webServer> 
      <staticContent> 
       <clientCache cacheControlMode="DisableCache" /> 
      </staticContent> 
     </system.webServer> 
    </location> 
</configuration> 
+1

E se si desidera applicarlo a tutti i file di un'estensione specifica? solo .xml o * .xml funzionano? – Zulgrib

+1

@Zulgrib per applicarlo a un'estensione specifica è possibile utilizzare le regole di riscrittura in uscita: http://stackoverflow.com/questions/32987486/iis-setting-cache-control-header-per-file-type/33444897#33444897 – jotap

-1

Ho avuto lo stesso issue.For me il problema era come configurare un limite di cache per images.And mi sono imbattuto in questo sito che ha dato alcuni spunti per la procedura su come il problema può essere gestito. Spero che sia utile anche per te Link: [https://varvy.com/pagespeed/cache-control.html]

+1

Si prega di considera l'aggiunta di alcune informazioni dal link alla tua risposta in base a https://stackoverflow.com/help/how-to-answer: i link a risorse esterne sono incoraggiati, ma per favore aggiungi un contesto intorno al link in modo che i tuoi colleghi abbiano qualche idea cos'è e perché è lì. Citare sempre la parte più rilevante di un link importante, nel caso in cui il sito target non sia raggiungibile o sia permanentemente offline. –

Problemi correlati