Domanda

Mi piacerebbe avere immagini, CSS e JavaScript nella cache lato client sul proprio browser durante il caricamento di una pagina web. Ci sono tanti tipi differenti di caching Sono confuso da quelli da utilizzare con asp.net MVC.

Sarebbe anche possibile avere il proprio browser verificare la presenza di versioni nuove o modificate di questi file?

Grazie!

È stato utile?

Soluzione

Browser prendersi cura di questo per voi automaticamente, in realtà. Devi andare dal tuo modo per farli NON cache di css, js, html e le immagini.

Io non sono che la familiarità con ASP MVC, ma penso che tipo di caching stai pensando di caching è codice operativo per il server-side in uscita dinamica creata?

Altri suggerimenti

È necessario impostare le intestazioni di controllo della cache sul server. È possibile farlo da attaccare questo nel vostro web.config:

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

Questo sarebbe dire al browser oggi per controllare anche per i nuovi contenuti su qualsiasi cosa statico per 30 giorni.

Per la seconda domanda, forniscono qualche meccanismo di aggiungere un querystring al contenuto. Nel mio progetto attuale che comprimere e combinare e JavaScript e CSS come parte della costruzione. Quando mettere i link nella pagina è appare come:

<script src="/Resources/Javascript/Combined.js?v=2.2.0.1901" type="text/javascript"></script>

Il querystring è il numero e le modifiche in qualsiasi momento Major.Minor.0.Changeset spingiamo un accumulo, causando il client di ri-prenderlo. La stessa cosa accade su fogli di stile nel loro elemento <link>.

@ Paolo Creasey e @Salsa sono entrambi corretto che i browser di gestire la cache di default fino a quando il collegamento è lo stesso.

Come lei ha ricordato, questo solleva un problema quando è necessario aggiornare questi file quando si dispone di alcuna garanzia che il browser del client verifica la presenza di una versione aggiornata. In molti casi essi farlo solo dopo un determinato periodo di tempo è passato che può creare un'esperienza utente scadente.

Ci sono una serie di domande già formulate in questo sito su come gestire allertare le browser client per aggiornare la cache . In breve, tutti si basano sulla modifica del collegamento quando si cambia il contenuto del file.

È possibile aggiungere un parametro per l'URL che verrà utilizzato solo per scopi di caching come ad esempio:

<script src="/myJavascript.js?version=4"></script>

Poi basta cambiare il numero di versione quando si modifica il contenuto e la necessità di forzare un aggiornamento lato client ala questa risposta .

Date un'occhiata alla risposta ho postato qui di una soluzione che massimizza il vantaggio di utilizzare la cache, ed evita qualsiasi problema con il bisogno che gli utenti 'dura' refresh ( Ctrl + F5 ).

Si utilizza un hash MD5 della stessa contenuti nell'URL, in modo che l'URL rimane lo stesso fino a quando il file è lo stesso, che è davvero l'obiettivo. Il calcolo del hash è super veloce, ed è memorizzato nella cache in memoria sul server in modo di rendering delle pagine non è sensibilmente rallentato. Il tutto viene misurato in microsecondi, e le prestazioni sono state (su il mio sito per i subacquei ) impressionante finora. Mi applico a tutte le immagini, CSS e JS con l'eccezione delle immagini dall'interno file CSS in quanto non sono generato dal server sul mio sito (ancora).

Questo è fatto meglio in IIS o nel file di configurazione - assicurarsi che il proprio CSS / JS / immagini sono impostate per non scadere mai

.

Quando li si fa riferimento dal codice, vi suggerisco aggiungendo una versione o costruire aggiornato al nome del file, per esempio script.js? 20100120, in modo che quando si arriva intorno a loro cambia, è sufficiente cambiare la versione a forzare un aggiornamento da tutti i browser che hanno nella cache di esso.

caching lato client viene gestito automaticamente dai browser quando si correttamente impostato header cache-Control e impostare web.config. Come quella:

<system.webServer>
    <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00.00:10:00" />
    </staticContent>
</system.webServer>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top