1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| function testerCache(resource, callback) {
// initialisation
var ok = true,
res,
dt0, dt1,
url = resource || "../image/pixel.gif"; // chemin relatif d'un fichier image
// premier appel
if (window.XMLHttpRequest && !document.all) {
// Uniquement pour le cas où "url" serait sur un domaine différent (ce qui est le cas pour mon test jsFiddle)
try {
window.netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (erreur) {
ok = false;
callback(erreur.message || erreur);
}
}
if (ok) {
$.ajax({
url: url,
cache: false, // forcer le chargement du fichier
error: function(x, s, e) {callback(s + ' (' + (e.message || e) + ')');},
success: function(d, s, x) {
url = this.url; // récupération de l'url exacte du premier appel.
dt0 = new Date(x.getResponseHeader('Date') || '1970 01 01').getTime();
// programmer le second appel
setTimeout(function() {
if (window.XMLHttpRequest && !document.all) {
// Uniquement pour le cas où "url" serait sur un domaine différent (ce qui est le cas pour mon test jsFiddle)
try {
window.netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (erreur) {
ok = false;
callback(erreur.message || erreur);
}
}
if (ok) {
$.ajax({
url: url,
cache: true, // activer l'utilisation du cache
error: function(x, s, e) {callback(s + ' (' + (e.message || e) + ')');},
success: function(d, s, x) {
dt1 = new Date(x.getResponseHeader('Date') || '1970 01 01').getTime();
if ($.isFunction(callback)) {
callback((dt0 == dt1) ? 'true' : 'false');
}
}
});
}
},
1050);
}
});
}
}
testerCache("http://jsfiddle.net/img/info-close.png", function(res) { alert(res); ); |
Partager