jQuery ajax: eliminare i problemi di caching

Problemi di caching con determinati browser e jQuery ajax? Ecco la soluzione!

Vediamo come agire sulla cache di jQuery ajax in modo tale da prevenire il caching della richiesta asincrona.

Di recente in un grosso progetto facente uso di Varnish Cache sul server mi è capitato che con alcuni browser come Firefox o Safari la richiesta asincrona fatta con jQuery ajax di fatto non funzionasse (anche se il pattern dell’url fosse filtrato lato server da varnish). Su Chrome e Opera nessun problema. Pertanto ho iniziato ad approfondire la funzionalità “cache” di jQuery Ajax. 

Questo parametro, da passare nel codice della chiamata, disabilita il caching di ajax. Ecco come implementarlo:

$.ajax({
type: "GET",
cache: false, // disabilita caching ajax
url: "url-to-ajax-call",
data: "ajax=" + ajax + "&timestamp=" + new Date().getTime(), // il timestamp dinamico a ogni call assicura la disabilitazione della cache
dataType: "html",
success: function(msg)
{
//successo
},
error: function()
{
//errori
}
});//ajax

Per essere sicuro che la  chiamata sia sempre “fresca” ho aggiunto anche un parametro timestamp alla richiesta che ovviamente cambia ad ogni call e rende il tutto dinamico assicurando che la richiesta sia sempre senza cache.

Spero che questa soluzione possa aiutarvi e risolvervi qualche problema 😉 A me avrebbe risolto almeno 2 ore di lavoro 😀

Photo credits “cache” disponibile su Shutterstock

Lascia la tua opinione

×