.NET Core

.Net Core – Static files e cache

La cache è il meccanismo che consente ai browser di memorizzare al loro interno le singole risposte http provenienti dal client. Vengono memorizzate all’interno della cache i contenuti di pagine, file javascript, immagini e ovviamente i file css.

Il sistema di caching dei file statici in ambiente di produzione è sicuramente molto importante, perchè consente al client di scaricare solo i file che effettivamente sono “scaduti” (ovviamente se non vengono effettuate forzature, come la cancellazione della cache sul browser). Questo tipo di comportamento non sempre è ottimale durante la fase di sviluppo: spesso una risposta diversa da quella che ci aspettiamo deriva proprio dal mancato aggiornamento dei file (all’interno della cache del browser).

Nelle applicazioni web realizzate tramite il framework “tradizionale” è possibile modifare il meccanismo di caching intervenendo direttamente all’interno del file web.config. In particolare, supponendo di aver predisposto un ambiente di sviluppo e uno di produzione, dovremo intervenire all’interno del file web.debug.config (e non nel file web.config, utilizzato in produzione).

La stessa configurazione può essere effettuata all’interno di web app scritte in .NET CORE 2.0. Rispetto alla versione 1.0 sono stati effettuati numerosi miglioramenti nella gestione delle configurazioni e del flusso di gestione delle chiamate. E’ possibile definire la configurazione dell’intera applicazione all’interno di Startup.cs, all’interno del metodo Configure, che viene utilizzato per configurare la pipeline delle richieste HTTP, a runtime.

Configurazione

Utilizzando app.UseStaticFiles() viene abilitata la gestione dei file statici (posizionati all’interno della cartella wwwroot). E’ possibile aggiungere un il parametro StaticFileOptions che il framework mette a disposizione per la gestione del flusso relativa alla risposta.

In particolare per ogni risposta viene impostato il valore dell’header con Cache-Control, Pragma e Expires. Sarebbe stato possibile inserire il valore delle singole variabili direttamente all’interno del file Startup.cs, ma poichè vogliamo disabilitare la cache solo durante la fase di sviluppo, i valori sono inseriti all’interno del file appsettings.Development.json ( una sorta di web.config “evoluto”) nel seguente modo:

Questo tipo di configurazione consente di disabilitare la cache nella configurazione di sviluppo, preservando il sistema di caching nell’ambiente di produzione.

 

 

Pubblicato da

Andrea Merlin

Laureato in informatica, diversi corsi di specializzazione legati allo Sviluppo Software e alla Computer forensics. Appassionato di nuove tecnologie, amo la programmazione, la Business Intelligence e tematiche legate alla Privacy.Sempre alla ricerca di nuove idee, stimoli … e progetti da seguire!Amo trascorrere il tempo libero in Val Borbera, un piccolo angolo del Piemonte, in provincia di Alessandria.