2010-01-26 22 views
11

Per salvare sia il tempo di download del client che l'utilizzo della rete, è possibile utilizzare la funzione localStorage di HTML5 per archiviare il contenuto di fogli di stile collegati, file javascript e dati binari (ad esempio immagini), piuttosto che colpire il server ogni volta?HTML5 localStorage per risorse (fogli di stile, JavaScript, immagini ecc.)

Sarebbe solo complicare le cose - poiché presumo che tu debba aggiungere la risorsa collegata tramite JavaScript anziché solo un elemento script o link, interrompendo la pagina per quelli senza JavaScript abilitato)? A meno che non sia possibile analizzare il contenuto (utilizzando HEAD richiesto per controllare la data dell'ultima modifica e altre intestazioni) prima che il browser lo scarichi.

O meglio solo attenersi alle intestazioni 304 Not Modified e eTag?

risposta

9

Credo che in questo caso si dovrebbe considerare offline caching:

È inoltre possibile dati di input archivio utenti in localStorage o sessionStorage:

Non utilizzare globalStorage (non uno standard).

Ho scritto un articolo su offline, vedo: http://hacks.mozilla.org/2010/01/offline-web-applications/

Si tratta di linea, ma tale meccanismo può essere utilizzato per aumentare il vostro web app.

+0

È possibile sfruttare il caching senza che il sito sia offline? O è meglio lasciarlo al browser per farlo per fogli di stile e JavaScript (usando un'intestazione che scade molto e impostando un'intestazione 304 - anche se ciò potrebbe comportare un lavoro extra su PHP o ASP.NET). Le immagini occupano molta larghezza di banda e non vengono modificate, ma vengono comunque scaricate (come se la cache del browser non funzioni correttamente) – SamWM

+0

I file vengono recuperati solo se si aggiorna manifest (indipendentemente dallo stato della connessione client). –

3

È possibile codificare in base64 i dati dell'immagine/binari e memorizzarli come stringa in localStorage, utilizzando gli URL base64 non funziona in alcuni browser, quindi non è una soluzione perfetta.

CSS e js andrebbero bene, potresti scriverli nella pagina o usare anche un URL base64.

Non mi preoccuperei di interrompere il sito per utenti non JS, poiché JS è disabilitato non è possibile accedere a localStorage in ogni caso.

+2

Le persone che non utilizzano js dovrebbero aspettarsi che la maggior parte dei siti Web si interrompa. Gli sviluppatori devono pensare in anticipo se vale la pena di sostenerli. –

+0

Ritengo che se si aggiunge una funzione che richiede javascript, non si depreca completamente il comportamento di fallback originale. – garrow

+4

Sì, sono tutto per il degrado aggraziato, ma a volte questo implica un codice separato, ed è uno sforzo in più che a volte non vale la pena, IMHO. Stessa cosa per IE6. –

Problemi correlati