La butto lì... il client chiede a B il file, B prende da A il file e lo copia in una cartella temp, cache come vuoi te e lo passa al client, alle prossime richieste B chiede ad A se il file è aggiornato o meno, nel qual caso ne fa un refresh della copia locale, in caso contrario serve al client la sua copia locale...

Questo è quello che di solito fa un proxy