Se il refresh che intendi fronteggiare avviene dal pulsante "back" del Browser o tasto F5 della tastiera, o addirittura su invio da barra indirizzi, si può fare forse qualcosa con i cookies.

Se invece intendi un refresh/ricaricamento della pagina in seguito ad un' azione sulla pagina stessa (click su un pulsante / esecuzione di una funzione), allora avevo elaborato un workaround JavaScript + IFRAME:

- una pagina-madre costituita per il BODY, da solo un in-line frame 100% width e height e per la HEAD, da variabili JS;
- la pagina "effettiva" viene caricata nell' iframe della pagina-madre: è l' indirizzo di questa che appare in barra indirizzi (!) ma a video si vede solo la pagina caricata nell' IFRAME (pagina-figlia) a tutti gli effetti.

La pagina-figlia può "raggiungere" le variabili sulla pagina-madre con parent.window
La pagina-madre non viene mai ricaricata in esecuzione quindi non si perdono le variabili; all' occorrenza, si ricarica solo il SRC dell' IFRAME.