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
 