189 messaggi dal 26 marzo 2001
Ciao,

sto sviluppando un'applicazione web in ASP.NET MVC 3 e vorrei implementare un meccanismo per evitare caching di file css e js.
Ho pensato di aggiungere all'url un parametro v nel query string che contiene la data di ultima scrittura del file css/js.

Questo però comporta il fatto che ad ogni pagina richiesta venga controllata l'esistenza del file css/js e la lettura della data di ultima scrittura.

Può incidere sulle perfomance?
Esistono tecniche migliori?

Grazie.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
anziché leggere la data/ora ad ogni richiesta, inseriscila nell'oggetto Cache dopo averla recuperata la prima volta.

Quando usi il metodo Cache.Insert per aggiungere il valore nella Cache, puoi fare in modo che la sua validità sia legata al file stesso.

Se il file cambia, la chiave di cache che contiene la data/ora verrà automaticamente invalidata.
A quel punto, il tuo codice dovrà ottenere la nuova data/ora ed inserirla nuovamente in Cache. Qui trovi un articolo di Daniele Bochicchio:
http://www.aspitalia.com/script/581/Cache-Dipendenza-File-ASP.NET.aspx

Poi magari misura il vantaggio prestazionale che ottieni dall'uso della cache, sfruttando la classe Stopwatch. Giusto per capire a quanto ammonta a livello pratico.

In alternativa, in MVC4 stanno introducendo una nuova libreria che, oltre alla funzionalità di caching delle risorse statiche, ti offre anche:
  • Bundling: concatenamento di più file css (o js) in un uno solo, in modo che il client debba effettuare una sola richiesta web per tipo di file (che significa tempi di caricamento ridotti della pagina)
  • Minification: gli a-capo e gli altri spazi inutili vengono rimossi, riducendo così il peso finale del file. Anche questo si traduce in minori tempi di caricamento delle risorse statiche.


Sul web trovi degli articoli che spiegano come impiegare questa libreria anche in MVC3. Personalmente non l'ho ancora provata, ma se ti va di dargli un'occhiata poi dimmi se funziona :)
http://www.jefclaes.be/2012/02/aspnet-mvc4-bundling-in-aspnet-mvc3.html

Altrimenti per MVC3 c'è Combres.
http://combres.codeplex.com/

ciao
Modificato da BrightSoul il 15 aprile 2012 11.28 -

Enjoy learning and just keep making
189 messaggi dal 26 marzo 2001
Ciao,

grazie per i suggerimenti.

Avevo valutato e provato la libreria di cui parli, System.Web.Optmization (http://nuget.org/packages/microsoft.web.optimization) ma putroppo è in beta e devo rilasciare tra un mese circa.

Se non viene rilasciata nel frattempo, provo con la soluzione Cache.

Grazie.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.