Pubblicato il 11/04/2017
Innanzitutto svuotala, tra poco ti spiego perché…
Svuotare la cache è diventata un’operazione di routine per sviluppatori e proprietari di siti Web. In quest’articolo cercheremo di capire cosa sia la cache e perché, a volte, vada svuotata…
Innanzitutto una premessa: non esiste una cache, ne esistono di diversi tipi, in quanto il termine cache ha un significato abbastanza generale:
la cache è un’entità che ha lo scopo di velocizzare l’esecuzione di programmi informatici. Esistono varie entità denominate cache: esiste la cache del processore, dei dischi, della memoria, la cache di secondo e terzo livello; tutte queste sono memorie a tutti gli effetti, sono elementi “fisici” propri del computer e che, in questa trattazione, ci interessano il giusto.
Esiste poi la cache dei DNS, la cache css e javascript, la cache server e la cache client del browser: vediamole assieme.
Ok, ma in parole semplici, cos’è la cache?
Per capire di cosa stiamo parlando, vediamo un esempio affine: molti di noi usano Google Maps sul proprio telefonino. Gmaps è un sistema cartografico offerto da Google che ci permette di consultare varie tipologie di mappe di (quasi) tutto il mondo.
Funziona con un metodo molto semplice: l’utente sceglie un punto e l’applicazione interroga un computer di Google (sto semplificando, sia chiaro :) ) che invia l’immagine della mappa allo schermo. Bene: avrete capito che la conditio sine qua non affinché funzioni è che ci sia una connessione, altrimenti il sistema non funziona.
Però, son certo, avrete fatto caso che se la stessa posizione l’avete visualizzata in precedenza, nonostante non ci sia connessione venga visto lo stesso sul telefono. Come mai?
Banale anche qui: Gmaps quando scarica una porzione di mappa la lascia memorizzata nella memoria per un tempo più o meno lungo; ecco, questa è la cache!
La cache di Google Maps consiste quindi nell’avere a disposizione porzioni di mappe memorizzate e visibili anche quando non c’è la connessione.
Cache del browser
La stessa cosa avviene per quasi tutti i web browser (Firefox, Chrome, Safari, Edge etc etc): quando si naviga un certo sito, il browser si salva in memoria i contenuti per poi farceli vedere molto più velocemente la prossima volta che rivisitiamo il sito in oggetto.
Ma c’è un ma: cosa succede se il sito web viene aggiornato?
Nessun problema: i browser sono abbastanza intelligenti (e i programmatori di solito abbastanza bravi) da controllare se la pagina che si sta cercando esiste, se quella pagina ha una scadenza oltre la quale deve per forza esser chiesta una pagina direttamente dal server o se la pagina chiesta è stata aggiornata nel frattempo.
Ciò che abbiamo descritto è la cache del browser: di solito funziona perfettamente e in modo trasparente per gli utenti.
Nel corso degli anni questi sistemi si sono evoluti: i browser non trattano più le pagine come un unico oggetto ma le considerano un gruppo di oggetti formati da varie entità; ed a ognuna di queste assegnano (o leggono ciò che ha indicato lo sviluppatore con dei codici particolari) la data di scadenza della cache. Se passata chiedono la versione nuova, altrimenti no. Cosa può succedere quindi?
Che si abbia una pagina esattamente come quella visitata nei giorni passati, con gli stessi contenuti, ma alla quale abbiamo sostituito un’immagine, oppure abbiamo modificato lo stile attraverso i css o il codice javascript.
Se, come capita per mille motivi, che i file modificati (immagini, css e js) siano rimasti invariati nel nome, che la pagina chiamata scada in futuro, il browser assume che i file immagini, css o js registrati in memoria siano quelli corretti.
Ecco allora la famosa regola dello svuotare la cache: va svuotata per costringere a ricaricare i file aggiornati.
E come si fa?
Nel 99% dei casi basta aggiornare la pagina (anche 2-3 volte, se necessario :P) cliccando sul tasto F5 (o meglio: su ctrl+F5) oppure su ctrl+r.
Se non funziona in questo modo basta andare nelle impostazioni dei browser e cercare l’apposita funzione (ad esempio in Firefox la trovate in: impostazioni -> preferenze -> rete -> contenuti del web in cache -> svuota; negli altri browser la procedura è simile: nel caso non la troviate basta cercare su google “svuota cache NOME DEL BROWSER” e troverete migliaia di esempi).
Esistono altri tipi di cache?
Come detto sì, ne esistono molti altri tipi; ne vediamo due, premettendo che il discorso è un po’ più tecnico e vi rimando ad articoli futuri in cui ne parlerò.
Cache server
Qui il discorso è un filo più complesso ma proviamoci lo stesso: ogni volta che richiamiamo una pagina dal browser, quest’ultimo fa una chiamata al server su cui è ospitato il sito per farsi mandare i contenuti richiesti.
Il web server, di solito, interpreta alcuni comandi, legge uno o più database, e poi “forma” la pagina.
Ora, immaginiamo il caso di un sito che parli di vacanze; quando un utente chiede la pagina di Roma, il server leggerà i contenuti da un database (ad esempio: le informazioni per il turista, gli hotel di Roma, le immagini, le pubblicità), li elaborerà, farà, se servono altre operazioni e mostrerà la pagina. Il tutto magari comporterà un tempo di elaborazione di un secondo.
Se, contestualmente (o quasi..) ci sono mille persone che chiedono la stessa pagina (o pagine simili…) il sistema ci metterà a rispondere all’ultima richiesta 1000 secondi (oddio, non è proprio così, ma rende l’idea). Il sito apparirà lento, ci sarà la famosa rotellina che gira gira e può anche succedere che il server non invii nulla perché son passati X minuti.
Ora, immaginate che si possa fare una cosa del genere: al primo che vedrà la pagina di Roma, il server risponderà nel modo sopra descritto; il server farà quindi i calcoli succitati e creerà la pagina “Roma”. E, a differenza di prima, la salverà anche in uno spazio “temporaneo”.
Quando il secondo chiederà la stessa pagina, il server, invece di fare tutte le computazioni, mostrerà la pagina appena creata.
Questa operazione renderà molto più veloce il tutto ed ha un solo limite: se i dati restano invariati nel tempo, nessun problema. Se, però, il gestore del sito cambia qualcosa le pagine che gli utenti vedono son quelle vecchie.
Per ovviare a tale inconveniente è d’obbligo assegnare una data di scadenza, oltre la quale il server rigenera la pagina. In tal modo c’è un buon compromesso tra velocità e aggiornamento.
Oddio, c’è un altro limite: se il sito ha tante pagine il server si riempirà di pagine salvate fino ad arrivare a casi limite di server non funzionanti perché pieni fino all’orlo. E lo spazio occupato sul server, nonostante ciò che sembrano far passare alcuni hoster, non è illimitato; è limitato e ha anche un costo. :)
Cache DNS
L’ultima tipologia di cache di cui trattiamo riguarda un caso particolare: la cache dei DNS. Un DNS (Domain Name System) è un traduttore di domini. Provo a spiegarmi: un sito di solito risiede su un computer che ha un nome del tipo: 123.234.123.234. Questa sequenza di numeri è l’IP, cioè il codice che identifica univocamente ogni computer in una rete, e se questa è Internet, nel Web. Siate certi che esiterà un unico computer al mondo che avrà quell'IP.
Ovviamente ricordare ogni sito con un numero di 12 (se non di più) cifre è abbastanza complesso; per tal motivo si utilizzano i cosiddetti nomi a dominio, cioè quelli che digitiamo nel browser (ad esempio: www.ueppy.com).
Per vedere un sito, quindi, noi non scriviamo il numero quanto il nome: www.nomesito.com. Quando lo facciamo un interprete tradurrà quel nome, comprensibile agli uomini, in un codice IP, comprensibile dai computer. Questo interprete è appunto il DNS.
Può succedere che si sposti un sito da un computer ad un altro: in tal caso, attraverso opportune procedure, si cambierà l’IP e quando si digiterà il nome del sito, il DNS saprà che il computer dove risiederà ha un nuovo IP.
Dove si cambia questo nome? Su dei server DNS globali, detti autoritativi. Capite bene come questi server potrebbero essere sovraccarichi: per evitare tale carico si usano altri server DNS sempre raggiungibili in rete, che, ad ogni cambio, si aggiornano in modo successivo (operazione che viene chiamata “propagazione dei DNS”); per velocizzare ulteriormente, ogni singolo computer, anche il vostro, ha una cache DNS affinché se ritorniamo su un sito non si perde tempo a farsi tradurre di nuovo l’IP dal nome a dominio.
Se, però, si è visitato un sito che poi è stato spostato, quando si ritorna di nuovo sullo stesso può capitare che i DNS puntino ad un computer sbagliato a causa della cache.
In tal caso va svuotata la cache DNS, operazione che si fa da terminale.
Su windows basta scrivere: ipconfig /flushdns
Su Mac il comando cambia in base alla versione; nelle ultime (10.7 in poi) il comando da dare è: sudo killall -HUP mDNSResponder.