Il caching di grandi quantità di oggetti restituiti ajax

3

Sto creando un'applicazione che recupera grandi quantità di elementi con richieste Ajax tramite altre API di applicazione. Mi restituisce oggetti da 6k a 30k js che vengono utilizzati più volte attraverso varie viste applicative (ordinamento, filtraggio, ecc.). Vorrei evitare di interrogare API ogni volta per una lista così grande, quindi ho deciso di memorizzare questi dati in qualche modo.

Stavo pensando a varie soluzioni:

  • salvandolo in localstorage,
  • utilizzando una libreria di memorizzazione nella cache (ad esempio locachejs),
  • memorizzazione in js var.

Non sono un esperto, quindi mi piacerebbe sentire i tuoi suggerimenti su ciascuna (o una di queste) soluzioni, sui suoi pro e contro.

Ogni aiuto sarà molto apprezzato.

    
posta mrmnmly 12.06.2014 - 15:32
fonte

1 risposta

3

Sfortunatamente, la risposta "giusta" qui dipenderà dalla dimensione (complessità) di quegli oggetti.

Ho trovato per esperienza che 25.000-50.000 di oggetti di complessità più comune sono il limite che mantiene il comportamento del browser entro i limiti dell'usabilità.

Qui ci sono alcuni risultati utili, corrispondenti ai miei, e puoi confrontare l'oggetto campione con il tuo:

link

Tenendo presente questo, la memorizzazione nella cache di questi dati potrebbe essere un approccio praticabile con le seguenti considerazioni:

  • attenderà che ~ 4 MB di dati da caricare siano giustificati dall'aumentata reattività dell'app in seguito?

  • lo spazio locale è limitato a 5 MB

Se l'attesa è giustificata, consiglierei a:

  • memorizza i dati in una var (il consumo di memoria non è male), se hai solo bisogno di accedere a parti di essa con le chiavi e usarle direttamente

  • usa IndexedDB, se hai bisogno di interrogare i dati, la sua struttura è più complessa o devi manipolarli in modi diversi sul lato client - è un approccio un po 'più complicato, ma le librerie possono aiutare (< un href="https://github.com/aaronpowell/db.js"> link mi ha servito bene)

Buona fortuna!

    
risposta data 27.06.2014 - 02:54
fonte

Leggi altre domande sui tag