cache del browser bypassata in firefox?

Considera la seguente pagina html, che può caricare molti file png di grandi dimensioni:

   function hide( ) { document.getElementById("here").innerHTML = "hidden"; } function show( ) { var loadMe = ""; for (var i=1; i<250; i++) { loadMe += "
"; loadMe += "
"; } document.getElementById("here").innerHTML = loadMe; } hide show

In IE, Safari e Opera su una macchina Windows, le immagini su questa pagina vengono caricate una sola volta (monitorate con FreeMeter) quando i pulsanti Mostra e Nascondi sono triggersti.

Tuttavia, in Firefox (appena installato), alcune immagini vengono caricate dal server più volte (non corrispondiamo mai al picco iniziale nelle richieste di rete … alcune cose vengono caricate dalla cache).

Le intestazioni di risposta delle immagini dicevano:

 Date Wed, 18 Mar 2009 11:42:02 GMT Server Apache/2.2.3 (Red Hat) Last-Modified Mon, 27 Oct 2008 19:19:47 GMT Etag "1abb7d7-292-45a41039f7ac0" Accept-Ranges bytes Content-Length 658 Cache-Control max-age=7257600 Expires Thu, 15 Apr 2010 20:00:00 GMT Connection close Content-Type image/png 

Esaminando about: cache , la maggior parte delle immagini caricate sembra essere elencata lì (anche se ispezionando la cache tra i clic di hide / show, sembra mancano le immagini):

     Number of entries: 462 Maximum storage size: 50000 KiB Storage in use: 5593 KiB ... Key: http://sofit.miximages.com/javascript/23_a.png Data size: 16139 bytes Fetch count: 13 Last modified: 2009-03-18 07:40:14 Expires: 2009-06-10 07:40:00 

    Cosa si aspetta da me Firefox che ricarichi queste immagini dalla cache in modo che possiamo andare facilmente alle chiamate di rete? Grazie!


    Aggiornare

    Se apro questa pagina in una nuova scheda dopo aver mostrato / nascosto nella prima scheda, la seconda scheda non fa richieste di rete. La prima scheda continua a fare richieste di rete.

    Il bug è descritto qui

    Non posso dirti perché Firefox si comporta in questo modo (o, meglio ancora, come sovrascrivere questo comportamento), ma suggerirei un approccio diverso che potrebbe aggirare il problema. Invece di build la stringa html più e più volte e rimuovere completamente questi elementi img dal dom, perché non crearlo solo una volta con un div contenitore esterno e mostrare / hide il div? In questo modo, le img fanno sempre parte del dom (e molto probabilmente non sentirai la necessità di rimuovere le immagini dalla cache).

    Oltre alla risposta di Rich, potresti provare a modificare alcuni valori di configurazione della cache di Firefox e vedere se alterano il comportamento:

     browser.cache.check_doc_frequency browser.cache.disk.capacity browser.cache.memory.capacity 

    Un altro modo per rimuovere il colpo di cache, per accelerare le prestazioni della pagina e per ridurre la congestione della rete (in generale, solo due richieste per dominio eseguite alla volta) sarebbe utilizzare CSS Sprites .

    Se tutte le tue immagini hanno dimensioni simili, combina alcune di esse e usa i CSS per controllare la posizione dell’immagine visualizzata. Potrai salvare le richieste HTTP per ogni immagine aggiuntiva e migliorare drasticamente la pagina. Molti siti web più grandi (come Yahoo!) Usano questa tecnica.