Ho dato un'occhiata veloce all'articolo. Credo si dovrebbe migliorare non usando ad esempio la cache. Se infatti e' vero che cosi puoi anche spegnere il computer e tornare dopo un certo tempo e' anche vero che 9 su 10 l'utente aspetta il risultato. Senza contare che cosi facendo, le risorse che il server web destina alla cache si gonfierebbero in caso di un gran numero di accessi e di gente che clicca e poi se ne va. Quindi legherei semmai alla session il risultato. Poi anche la pagina html che fa il refresh non e' granche'.
Di solito quando chiamo in maniera asincrona delle funzioni lente io uso i delegati.
Chiamo la funzione (magari esposta da un webservice) in modo asincrono specificando che la funzione A gestira' il risultato; la funzione A mette in un oggetto session (quindi senza bisogno di guid vari) il risultato; l'utente fa altre cose e quando torna sulla pagina o preme un certo tasto se il risultato e' presente in session lo visualizza altrimenti si visualizza un messaggio "procedura in corso".
Da approfondire i limiti che l'articolo se non ho capito male sottolinea all'inizio nell'utilizzo di questa tecnica.