una cosa abbozzata in 5 minuti (non l'ho testata, è solo per darti un'idea)
codice:
(function($, url) {
$(document).ready(function() {
var refreshRate = 5000, /** 5 secondi **/
increase = 1.25,
ping = function() {
var
pingXHR = $.ajax({
"url" : url,
"success" : function() {
location.href = url;
},
"complete" : function() {
clearInterval(pingTimeout);
refreshRate *= increase;
setPageTimeout();
}
}),
pingTimeout = setTimeout(function() {
pingXHR.abort();
refreshRate *= increase;
setPageTimeout();
}, 5000)
},
setPageTimeout = function() {
setTimeout(function() {
ping();
}, refreshRate)
};
setPageTimeout();
});
}(jQuery, "http://www.tuodominio.it/pagina-da-aggiornare.php"));
in pratica dopo un certo tempo dal caricamento della pagina (nell'esempio, 5 secondi) parte una chiamata ajax all'url che vuoi aggiornare.
se la trova il browser ricarica la pagina a quell'url altrimenti viene rischedulato un nuovo ping che può essere impostato o al tempo originario (5 secondi) oppure ad un tempo crescente, impostando la variabile increase ogni volta che il ping fallisce.
nell'esempio ipotizzando che tu sia offline o il server non risponda il ping avverrà dopo 5 secondi, poi dopo un tempo crescente come nell'esempio che ti posto qui sotto