Qual è il punto?
Esiste già una tecnica consolidata chiamata memorizzazione nella cache sul lato client. Che cosa porta in questo caso l'archiviazione locale HTML5 che cosa manca nella cache?
Potresti avere una specie di strana applicazione che deve caricare dinamicamente blocchi di codice JavaScript, quindi non puoi usare efficacemente la cache, ma è un caso estremamente raro.
Inoltre, sii consapevole di un'altra cosa. I browser hanno politiche specifiche per la cache, e la maggior parte dei browser è abbastanza buona per gestire bene la cache (rimuovendo solo il contenuto più vecchio, ecc.). Implementando la cache fatta in casa, impedisci ai browser di gestirlo correttamente. Non solo può essere criticato da solo, ma ti farà anche male presto o tardi. Esempio: quando gli utenti di un'applicazione Web segnalano bug, spesso rispondi chiedendo loro di svuotare la cache. Non sono sicuro di cosa chiederai nel tuo caso, poiché la cancellazione della cache non risolverà mai i problemi con la tua app web.
In risposta alla prima modifica (la seconda modifica è off-topic):
I do aware browser cache, there will be still some header access checking
Sembra che manchi una certa comprensione del caching del browser. Ecco perché è essenziale capire come funziona prima di iniziare a implementare il tuo meccanismo di caching domestico . Reinventa la tua ruota solo quando comprendi abbastanza le ruote esistenti e hai una buona ragione per non usarle. Vedere il punto 1 di la mia risposta alla domanda "Reinventare il ruota e NON rimpiangerlo ".
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 poche ore prima, non è necessario scaricarlo di nuovo.
- Evita di eseguire query per la data in cui il file è stato modificato l'ultima volta. Se
Expires
di un'entità cache è 5 maggio th , 2014, non devi presentare alcuna richiesta GET né nel 2011 né nel 2012 o 2013, poiché sai che la cache è attiva -to-date.
Il secondo è essenziale per i CDN. Quando Google serve JQuery a un visitatore di Overflow dello stack o cdn.sstatic.net
serve immagini o fogli di stile usati da Stack Overflow, non vogliono che i browser richiedano una nuova versione ogni volta. 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 accade quando arrivo alla pagina iniziale di Overflow dello stack:
Ci sono 15 file da servire. Ma dove sono tutte quelle risposte 304 Not Modified
? 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 ciò può essere utile . Come ho detto all'inizio della mia risposta, ne trovo solo una: dove stai servendo blocchi di JavaScript per utilizzarli, OMG, eval()
. Ma in questo caso, sono abbastanza sicuro che ci sono approcci migliori che sono:
- Più efficace utilizzando le tecniche di cache standard o
- Più facile da mantenere.