devdev / in the loop

Come evitare la cache dei CSS e Javascript

Spesso è indispensabile evitare che il browser degli utenti che visitano il nostro sito usi una versione vecchia dei fogli di stile CSS o dei file Javascript. Capita, quindi, che le modifiche apportate non vengano poi effettivamente visualizzate o eseguite dai nostri utenti. La cache, però, resta un fattore fondamentale per l’ottimizzazione delle prestazioni di un sito.

Come possiamo evitare la cache del browser?

Spesso lato server la cache viene gestita in modo molto conservativo, con la conseguenza che si tende a forzare troppo la scadenza troppo lunga dei contenuti, e da qui il problema di servire al browser file vecchi.

Supponiamo che la cache del CSS principale del sito abbia una durata di 7 giorni, ma abbiamo appena rilasciato un piccolo aggiornamento. Non potendo dire al browser dei visitatori “Svuota la cache!”, il trucco più semplice è fargli credere che il CSS sia diverso, modificando il nome dei file e quindi l’URL della risorsa chiamata.

https://miosito.it/css/screen.css  diventa https://miosito.it/css/screen.css?v2

Cambiando il nome del file, quindi, il browser, scaricherà una nuova copia di screen.css  e la metterà in cache, secondo le regole di durata preimpostate dal server. Quindi, se abbiamo intenzione di avere versioni future (ad esempio v3, v4, etc.) dovremmo ripetere l’operazione, cambiando nuovamente il nome del file.

Questo discorso vale per tutti i file statici, come javascript, HTML, file di testo, etc.

Evitare automaticamente il caching

Abbiamo capito, quindi, che basta cambiare il nome del file aggiungendo dei parametri fittizi del tipo screen.css?v2  per forzare il browser a scaricare una nuova versione di screen.css . Come possiamo automatizzare questo processo? Cambiando sistematicamente il nome del file ad ogni aggiornamento.

In questo esempio, screen.css  viene parametrato automaticamente con una stringa basata sulla data di modifica del file stesso. La funzione PHP filemtime restituisce l’ultima data di modifica del file in formato Unix timestamp. Ogni volta che pubblicheremo un nuovo screen.css , l’URL sarà diverso, evitando la cache.

<head>
<link type="text/css" href="screen.css?<?php echo filemtime("screen.css"); ?>">
</head>

La risorsa effettivamente chiamata sarà di conseguenza simile a questa:

screen.css?1489427332

Lo stesso principio, come detto, vale per tutti i tipi di file statici, come ad esempio script javascript

<script src="script.js?<?php echo filemtime("script.js"); ?>"></script>

 

Questo articolo ti è stato utile?
Javascript – LETTURA 4 MINUTI Alternativa a jQuery .eq() in Javascript
Una delle funzioni di traversing più utili di jQuery è sicuramente .eq() . Ci permette di accedere ad un elemento di…
Javascript – LETTURA 4 MINUTI Come conoscere la posizione di un elemento con jQuery index o in vanilla Javascript
Il motto di jQuery è “Write less, do more”, anche se gli ultimi anni stiamo vedendo uno shifting di molte…
Javascript – LETTURA 6 MINUTI Utilizzare i parametri GET in Javascript con URLSearchParams
I parametri URL, che tutti conosciamo come parametri GET o query) vengono utilizzati per passare informazioni alla pagina che stiamo…
Javascript – LETTURA 4 MINUTI Aggiungere una regola CSS con Javascript
Aggiungere una regola CSS in modo dinamico con Javascript può esserci utile in vari casi: uno riguarda sicuramente le performance,…
Roba figa da
if (weekend) {
    relax();
}
la nostra newsletter, ogni tanto.