Parece que você está procurando por duas soluções diferentes. O primeiro é o servidor proxy simples, que armazena respostas em cache. Você pode usar por exemplo o squid para isso. A segunda solução (reenviando as consultas após a restauração da conexão) é bem mais complexa e eu não sei sobre a solução de trabalho.