Sto scrivendo un'applicazione web in javascript che verrà pubblicata sul browser dei clienti. L'intento è che l'app appaia al client come un'applicazione monolitica, non una serie di pagine Web di aggiornamento interconnesse.
La mia domanda riguarda l'architettura comune. Per mettere in relazione la domanda, menzionerò una caratteristica specifica dell'app Web è un "tour"; quando il cliente fa clic su un pulsante con l'etichetta "tour", l'app web caricherà un div con un po 'sull'app stessa e su cosa può fare per l'utente. Ci sono due modi in cui questo può essere gestito, il browser client può recuperare il markup del tour dal server quando l'utente fa clic sul pulsante, o il server può scaricarlo (e tutte le altre funzionalità) quando l'app viene inizialmente scaricata.
Se cerco il tour su richiesta, quindi forse salverò la larghezza di banda della rete, dato che non tutti parteciperanno al tour, anche l'app sarà più piccola. Ma questo significa che per consentire a qualcuno di utilizzare app completamente la rete ci sarà più congestione della rete poiché ci sarà un altro colpo in rete per caricare il tour.
Se inizialmente utilizzo solo tutte le funzionalità, l'app è più grande, ma c'è meno congestione sulla rete perché, una volta scaricata, c'è meno necessità di accedere alla rete (a meno che non sia richiesta una nuova copia dell'app (es. se-Modified-Since).
Questa funzione "tour" non è in realtà il problema stesso, è solo un esempio per spiegare la mia domanda. Come bilanciare caching vs impegnativo nella progettazione di app Web?