2011-12-05 14 views
6

Non sono sicuro di cosa sto facendo male, ma nonostante tutto ciò che ho provato, non riesco a convincere i clienti a mettere in cache le mie risorse statiche.La cache del client definita sembra essere ignorata

Nel mio web.config, ho aggiunto la seguente voce:

<staticContent> 
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" /> 
    </staticContent> 

In base alla documentazione, questo dovrebbe inviare un header di risposta al browser del client di farle sapere che vogliamo tenere aggiornati i contenuti statici memorizzato nella cache per 30 giorni.

Se utilizzo il violinista per vedere cosa riceve il client, sembra che la mia aggiunta a web.config venga ignorata completamente.

Qui di seguito è quello che sta riportando Fiddler:

Cache-Control: no-cache 
Date: Mon, 05 Dec 2011 14:09:44 GMT 
Expires: -1 
Pragma: no-cache 
Vary: Accept-Encoding 

non ho tutte le intestazioni in IIS override di questo in modo da non sono sicuro che cosa è che mi manca. Qualsiasi aiuto sarebbe molto apprezzato.

risposta

6

Ho rotto questo, ma ci è voluto un po '. Stai provando a forzare 304s dal server (nessuna modifica). Differisce con le versioni di IIS.

E 'meglio raggiunto avendo tutti i sei contenuto statico in una directory (ad esempio content quindi bisogna /content/css/content/js etc)

Poi basta per garantire tutto sotto quella directory non ha scadenza per, diciamo, 30 giorni.

IIS7

Molto più facile. Il modo più semplice: aggiungere un web.config alla directory dei contenuti di cui sopra. Questo web.config avrà solo la direttiva scade:

<system.webServer> 
    <staticContent> 
     <clientCache 
      cacheControlMaxAge="30.00:00:00" 
      cacheControlMode="UseMaxAge" /> 
    </staticContent> 
</system.webServer> 

IIS6

Avrai bisogno di manipolare il metabase. Non è XML in IIS6, segui le istruzioni qui: IIS6 ETags metabase commands

Abbiamo usato sia la visualizzazione sopra riportata sia la semplice visualizzazione degli eventi di Firebug 304 in arrivo.

+0

Prima di tutto, grazie per il vostro aiuto. Ottengo gli 304 come si fa notare sopra ma l'aggiunta di web.config nella cartella del contenuto non ha fatto alcuna differenza. Ho provato ad aggiungere il nuovo web.config alla cartella/Content e ho finito per ottenere 500 errori (_questo è un problema con la risorsa che stai cercando, e non può essere visualizzato_). L'ho anche spostato nella cartella in cui si trova la risorsa:/Content/css e il file css è stato recuperato correttamente ma con l'intestazione no-cache di nuovo. – Yag

+0

Sembra che questo possa aiutare http://stackoverflow.com/questions/5385714/deploying-website-500-internal-server-error routing forse .... – penderi

Problemi correlati