La cache nei risultati Ajax

Se almeno una volta nella vita avete creato una piccola applicazione ajax vi sarete accorti che certi browser non conformi agli standard (Internet Explorer 6 ? Si proprio lui …) hanno dei piccoli problemi di cache quando si eseguono delle direttive javascript onload.

Mi spiego con un piccolo esempio.

Mettiamo caso di avere una pagina la_mia_pagina.php dove al suo interno ho questo codice :

<body onload=’javascript:carica_contenuto_ajax()’>

La direttiva qui sopra non fa altro che chiamare una funzione javascript (che avremo definito nell’head) che a sua volta esegue una semplice chiamata Ajax.

La stessa cosa molti di voi potrebbero farla in questa maniera :

<img src=/images/onload.gif’ onload=’javascript:carica_contenuto_ajax()/>

L’immagine onload.gif non è altro con un immagine trasparente 1px x 1px sfruttata per richiamare la funzione javascript una volta caricata dal browser.

Questo metodo sinceramente è il mio preferito ma alcuni browser metteranno (come giusto che sia) in cache l’immagine per caricarla istantaneamente al prossimo refresh.

Questo per noi è un problema. Infatti se l’immagine va in cache noi non avremo più l’effetto onload desiderato.

Per ovviare a questo consiglio di usare questa piccola parte di codice javascript che altro non fa che aggiungere alla fine dell’indirizzo dell’immagine un numero date generato ad ogni refresh della pagina.

I browser quindi penseranno che si tratti di un immagine sempre diversa evitando così di metterla in cache.

<script type=”text/javascript”>
var src =/images/onload.gif?+ Number(new Date);
var func = “onload=’carica_contenuto_ajax()’”;
document.write(<img src=+ src + ” “+ func +” height=1′ width=1>);
</script>

friimaind

Mi chiamo Massimiliano e sono uno sviluppatore web. Ho aperto questo blog principalmente come agenda dove tenere traccia di tutte le mie passioni :)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *