La data di memorizzazione nella cache ha senso in determinate condizioni:
- Lavorare su una vecchia serie di dati ha ancora senso. Immagina le banche che eseguono operazioni di compravendita su vecchi dati di mercato!
- Rendi l'utente consapevole del fatto che sta lavorando con dati meno recenti. Aggiungerei un indicatore all'applicazione che fornisce un suggerimento "Stai attualmente lavorando su un set di dati più vecchio."
Dovrai decidere se vuoi memorizzare nella cache i dati sull'applicazione del livello di rete.
Livello applicazione
A livello di applicazione significa meno lavoro per te, ma funziona solo in modo affidabile se il feed si aggiorna spesso e c'è una buona probabilità che tu possa prendere un feed valido entro un paio di minuti).
Il solito schema di accesso ai dati è probabilmente simile a:
Download -> Parse -> Validate -> Use in business logic
Questi passaggi dovrebbero essere incapsulati in classi diverse, invisibili alla logica aziendale. È semplice chiedere a una classe di "fornire dati per favore" .
Puoi usarlo a tuo vantaggio aggiungendo un "caching"
Vorrei aggiungere il seguente passaggio:
Download -> Parse -> Validate -> Store -> Use in business logic
Con store voglio dire salvare qualsiasi dato che possiedi dopo la validazione (che può essere una stringa grezza o alcune classi deserializzate) ad un qualche tipo di archiviazione di dati astratti (diverse implementazioni possibili, db, file , memoria). Si tratta fondamentalmente di un'applicazione del schema di decorazione .
Livello di rete
È inoltre possibile creare un semplice server Web che funge da proxy. Ad ogni richiesta il server tenta di ottenere una versione dall'origine remota ed esegue l'analisi e la convalida dei suoi contenuti. Se ciò è valido, sostituisce il contenuto della sua cache corrente e restituisce la cache alla tua applicazione.
Per ridurre la quantità di modifiche all'applicazione, il server proxy si comporterebbe allo stesso modo del server remoto. Tuttavia, potresti voler aggiungere un attributo al feed restituito indicando che è memorizzato nella cache (per visualizzarlo nella tua applicazione). Non dovrebbe impiegare troppo tempo uno sviluppatore esperto per farlo.