Ho riscontrato problemi simili causati dalla mancanza di controllo sul comportamento di memorizzazione nella cache dei file elencati nel manifest della cache. Risulta che puoi ottenere un certo controllo su questo processo usando iFrame.
La strategia consiste nel dividere le migliaia di file elencati nel manifest della cache principale in manifesti di cache separati (e più gestibili), quindi creare un sacco di pagine HTML fittizie, ognuna delle quali fa riferimento a un manifest della cache. Quindi, per ciascun codice HTML fittizio, aggiungi un iFrame collegato ad esso nel tuo documento HTML principale. Puoi inserire gli iFrame all'interno di un div invisibile, che renderà il trucco invisibile all'utente.
Quando ogni iFrame viene caricato, controlla il manifest della cache individuale. Se qualche file all'interno di tale manifest della cache viene modificato, l'iFrame memorizzerà solo il suo sottogruppo di file. Puoi raggruppare in modo intelligente i file correlati, in base a quanto ti aspetti che cambino.
Ciò che è ancora meglio è che puoi inserire dinamicamente iFrame sul tuo HTML principale in qualsiasi punto dell'interazione dell'utente, e solo quando viene caricato l'iFrame, l'avanzamento della memorizzazione nella cache verrà attivato.