Qual e il punto?
Esiste già una tecnica consolidata chiamata memorizzazione nella cache lato client. Cosa porta in questo caso l'archiviazione locale HTML5 in ciò che manca nella cache?
Potresti avere una sorta di strana applicazione che deve caricare in modo dinamico blocchi di codice JavaScript in modo da non poter utilizzare efficacemente la cache, ma è un caso estremamente raro.
Inoltre, sii consapevole di un'altra cosa. I browser hanno criteri specifici per la cache e la maggior parte dei browser è abbastanza brava a gestire bene la cache (rimuovendo solo i contenuti più vecchi, ecc.). Implementando la cache fatta in casa, si impedisce ai browser di gestirla correttamente. Non solo può essere criticato da solo, ma ti farà male anche prima o poi. Esempio: quando gli utenti di un'applicazione web segnalano bug, spesso rispondi chiedendo loro di svuotare la cache. Non sono sicuro di ciò che chiederai nel tuo caso, poiché svuotare la cache non risolverà mai i problemi con la tua app web.
In risposta alla tua prima modifica (la tua seconda modifica è fuori tema):
Conosco la cache del browser, ci sarà ancora qualche controllo di accesso all'intestazione
Sembra che tu non abbia una certa comprensione della memorizzazione nella cache del browser. Ecco perché è essenziale capire come funziona prima, prima di iniziare a implementare il proprio meccanismo di cache fatto in casa . Reinventa la tua ruota solo quando hai capito abbastanza le ruote esistenti e hai una buona ragione per non usarle. Vedi il punto 1 della mia risposta alla domanda "Reinventare la ruota e NON pentirla" .
Quando si forniscono alcuni dati tramite HTTP, è possibile specificare alcune intestazioni relative alla cache:
Last-Modified
specifica quando il contenuto è stato modificato,
Expires
specifica quando il browser deve chiedere al server se il contenuto è cambiato .
Queste due intestazioni consentono al browser di:
- Evita di scaricare il contenuto ancora e ancora. Se
Last-Modified
è impostato sull'ultimo mese e il contenuto è stato già scaricato oggi poche ore prima, non è necessario scaricarlo di nuovo.
- Evitare di eseguire una query per la data in cui il file è stato modificato l'ultima volta. Se
Expires
di un'entità di cache è 5 maggio ° 2014, non c'è bisogno di emettere qualsiasi richiesta GET né nel 2011, né nel 2012 o 2013, poiché si sa che la cache è up-to-date.
Il secondo è essenziale per i CDN. Quando Google fornisce JQuery a un visitatore di Stack Overflow o pubblica cdn.sstatic.net
immagini o fogli di stile utilizzati da Stack Overflow, non desidera che i browser richiedano sempre una nuova versione. Invece, stanno servendo quei file una volta, impostano la data di scadenza su qualcosa di abbastanza lungo, e questo è tutto.
Ecco ad esempio uno screenshot di ciò che sta accadendo quando arrivo alla home page di Stack Overflow:
Ci sono 15 file da servire. Ma dove sono tutte quelle 304 Not Modified
risposte? Hai solo tre richieste di contenuto che sono cambiate. Per tutto il resto, il browser utilizza la versione memorizzata nella cache senza effettuare alcuna richiesta a nessun server .
Per concludere, devi davvero pensarci due volte prima di implementare il tuo meccanismo di cache e soprattutto trovare un buon scenario in cui questo può essere utile . Come ho detto all'inizio della mia risposta, posso trovare una sola: dove si sta servendo pezzi di JavaScript per utilizzare loro attraverso, OMG, eval()
. Ma in questo caso, sono abbastanza sicuro che ci siano approcci migliori che sono:
- Più efficace utilizzando le tecniche di cache standard, o
- Più facile da mantenere.