Come specificare HTTP intestazione di scadenza? (ASP.NET MVC+IIS)

Sto già utilizzando la cache di output nel mio ASP.NET applicazione MVC.

Pagina di velocità mi dice di specificare HTTP scadenza della cache per il css e le immagini nell’intestazione della risposta.

So che l’oggetto Response contiene alcune proprietà che consentono di controllare la scadenza della cache. So che queste proprietà possono essere utilizzate per controllare la cache di HTTP per la risposta che mi sono serve il mio codice:

Response.Expires
Response.ExpiresAbsolute
Response.CacheControl

o, in alternativa,

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

La domanda è: come faccio a impostare l’intestazione di Scadenza per le risorse che sono servite automaticamente, come ad esempio immagini, css e simili?

InformationsquelleAutor Marek | 2010-04-09

 

3 Replies
  1. 77

    Trovato:

    Ho bisogno di specificare la cache del client per i contenuti statici (nel web.config).

    <configuration>
      <system.webServer>
        <staticContent>
          <clientCache cacheControlCustom="public" 
          cacheControlMaxAge="12:00:00" cacheControlMode="UseMaxAge" />
        </staticContent>
       </system.webServer>
    </configuration>

    da http://www.iis.net/ConfigReference/system.webServer/staticContent/clientCache

    • come è differente l’impostazione di un futuro lontano la data di scadenza in IIS ??
    • non sono sicuro se c’è qualche differenza – sentitevi liberi di controllare le differenze nel traffico HTTP 🙂 Il citato approccio ha un vantaggio che è possibile modificare il comportamento della cache senza la configurazione di IIS (ad esempio su hosting condiviso)
    • È questo lavoro se im utilizzando IIS 6, invece?
    • Che cosa succede se, una delle modifiche dell’immagine prima che la cache data di scadenza. Come facciamo iniziale 302 richiesta per l’immagine?
    • se è un immagine diversa, utilizzare un nome diverso, o utilizzare una cache-buster (querystring con la data del file)
    • Inoltre, per chiunque sia curioso, quando si premere il pulsante di aggiornamento del browser, sarà fare un if-modified-since richiesta per ogni file… se si passa, vedrai che la cache di risposta.
    • ho provato questo, ma ho un problema here la mia domanda, scade intestazione non è impostato

  2. 31

    Se vuoi farlo da codice per una risorsa che si sta tornando (ie. non un file statico di essere servito da IIS), è meglio utilizzando Response.Cache:

    Response.Cache.SetExpires(DateTime.Now.AddYears(1));
    Response.Cache.SetCacheability(HttpCacheability.Public);

    So che non è esattamente quello che stai chiedendo, ma ho trovato questa domanda su Google e figura altri potrebbe piacere questa risposta quanto riguarda le Api si mostra nella domanda originale del testo.

    • Non dovrebbe essere di tipo DateTime.UtcNow? Se non, si può spiegare come il browser sa che ora locale del server è? (Aggiornamento: in realtà stackoverflow.com/questions/4849744/… risponde a questa domanda)
    • Buona domanda. Come si è scoperto, non importa.

Lascia un commento