7

Per scopi di prestazioni, desidero che alcune delle mie pagine Web utilizzino risorse che sono state memorizzate nella cache per l'utilizzo offline (immagini, CSS, ecc.) Ma per non avere la pagina memorizzato nella cache in quanto il contenuto verrà generato dinamicamente.Ometti la pagina corrente dall'appcache offline HTML5 ma utilizza le risorse memorizzate nella cache

Un modo per farlo sarebbe quello di refactoring le mie pagine in modo che caricano il contenuto dinamico tramite AJAX o cercando le cose in LocalStorage. I dettagli possono variare, ma in generale, qualcosa del genere.

Se è possibile, preferirei trovare un modo per indicare semplicemente al browser di utilizzare le risorse memorizzate nella cache (di nuovo, immagini, CSS, ecc.) Per la pagina ma non di memorizzare effettivamente il contenuto HTML (generato dinamicamente) si.

C'è un modo per farlo con l'app offline di HTML5? Ho l'impressione che la risposta sia "no" perché:

  • Qualsiasi pagina che include il manifest verrà memorizzata nella cache, quindi non posso specificare le risorse nella cache nella pagina stessa.
  • Non c'è modo di dire a una pagina precedente "usa risorse offline per questa altra pagina ma in realtà non memorizza nella cache l'HTML su quella pagina". Devi specificare la pagina stessa, il che significa che l'HTML sarà memorizzato nella cache.

Mi sbaglio? Sembra che ci sia probabilmente un modo complicato (o non così insidioso) intorno a questo. Ora che l'ho digitato, mi chiedo se includere esplicitamente la pagina nella sezione NETWORK del manifest appcache farà il trucco.

risposta

7

La mia risposta è "sì".

Ho lavorato a un'app Web in cui sono state elencate tutte le risorse necessarie nel manifest e impostato la sezione NETWORK su *.

Il file manifest è quindi incluso solo nella pagina di destinazione principale. Quindi tutte le risorse vengono memorizzate nella cache la prima volta che si visita il sito e funziona perfettamente.

Insomma,

  • una delle tue pagine devono includere il manifesto e saranno quindi memorizzate nella cache.

    forse si può avere il manifest caricato in un iframe e non avere l'intera pagina memorizzata nella cache, solo un pensiero.

  • lista tutte le risorse per essere memorizzati nella cache nella sezione CACHE

  • impostare la sezione NETWORK a *
+2

Oh crude, in realtà funziona in modo simile a quello appena creato, con lo scenario di utilizzo tipico che stavo già utilizzando. Ora non mi sento sciocco a non provarlo prima! – Trott

+1

sei sicuro che in questo modo la pagina non in cache utilizza le risorse memorizzate nella cache? Non sono così sicuro. questo funziona, ma penso che la pagina caricherà le risorse dal server ... – pkyeck

+0

@pkyeck l'applicazione utilizzerà le risorse memorizzate nella cache quando disponibili. Per ottenere il contenuto più recente dovrai modificare il manifest o cancellare la cache. Una tecnica accurata è quella di sommare il manifest a MD5 e scrivere il valore nel file manifest, così quando il mio manifest cambia il valore MD5 cambia che viene scritto nel file che attiva un aggiornamento della cache. Questo è fatto dal lato server btw. – gotomanners

2

Sono abbastanza certo che la risposta a questa domanda è no. Se si utilizza la sezione Rete in Chrome, quindi mostra quali risorse vengono caricate dalla cache e che vengono caricate dal server. Ho tentato di impostare l'appcache come descritto sopra e le risorse vengono sempre caricate dal server. Sarei corretto supponendo che se la pagina corrente non si trova nell'appcache, non si preoccuperà di controllare l'appcache per nessuna delle risorse?

0

Quello che ho trovato che funziona è elencare quei file che non si desidera memorizzare nella cache in appcache nella sezione NETWORK: manifest. Per me, questo significava aggiungere * .asp * alla sezione di rete. Ora, nessuno dei classici file asp, o dei file aspx, viene memorizzato nella cache.