Poche cose da prendere in considerazione
Nomi delle lettere maiuscole
Then I'd make a function called User.update()
that just pulls userdata
from the server and populates the User class properties. This is the
only function that would be allowed to write over the User properties.
Chiunque abbia familiarità con il modello di progettazione Active Record verrebbe ingannato dal nome del metodo.
Il nome potrebbe farci credere che stiamo apportando modifiche al server, ma in realtà - in base alla domanda - faremmo l'opposto !!!
Se stiamo tirando l'ultima rappresentazione User
, dovremmo prendere in considerazione la possibilità di cambiare il nome del metodo per qualcosa come recuperare , aggiornare o ricaricare . Se stiamo veramente sincronizzando, sync sarebbe più accurato di update .
Troppe richieste
I would run the User.update()
function during times such as:
- App launch
- App re-opened from sleep
- Profile update
- After in-app-purchase
- etc.
Se abbiamo bisogno di riorganizzare il User
così spesso, probabilmente significa che non dovremmo mantenere tutto il suo stato. O almeno non completamente. 1
Idealmente, richiediamo i dati più recenti quando c'è una prova di cambiamenti e dobbiamo essere consapevoli di loro. Ad esempio, dopo specifiche operazioni commerciali.
Altrimenti, ci rendiamo conto che qualsiasi evento evento | azione | momento è buono come qualsiasi altro. Tale casualità, alla fine, ci porta a recuperare metà DB senza ragioni coerenti.
Se App re-opened from sleep
è un buon momento per aggiornare il User
, perché non dovrebbe essere buono per qualsiasi altra entità?
Ricorda che le connessioni consumano risorse e hanno anche un impatto sul piano dati. Quindi, considererei la limitazione delle richieste all'essenziale.
Memorizzazione nella cache solo dell'essenziale
Considera di tenere gli URI al posto della rappresentazione completa. Ad esempio, potremmo richiedere e conservare dati che è improbabile che cambino.
GET /user/1 HTTP/1.1
HTTP 200 OK
{
"fullname":"Han Solo"
}
Memorizzare nella cache il nome completo e tenere gli URI di tali risorse sensibili ai cambiamenti. Ad esempio, /user/1/profile
e /user/1/score
.
In seguito, possiamo recuperare queste risorse solo quando l'azienda ha bisogno di esse invece che casualmente dopo determinati eventi dell'applicazione.
Infine, pensa a chi altro cambierà il User
accanto all'utente stesso. Se non c'è concorrenza sui dati, probabilmente l'applicazione client ha sempre la rappresentazione più aggiornata.
1: Quello che facciamo con lo storage locale è il caching. Se dobbiamo scadere spesso con la cache, significa che non abbiamo affatto bisogno della cache o stiamo memorizzando nella cache i dati sbagliati.