2011-10-08 20 views
6

Quando si ottiene un elenco di voci tramite una chiamata JSON, è meglio utilizzare diverse chiamate di piccole dimensioni (per ottenere le informazioni necessarie) o una chiamata di grandi dimensioni con tutti i dati.Quanti dati deve recuperare una chiamata JSON?

Ad esempio, si dispone di una chiamata JSON per ottenere un elenco di libri corrispondenti a una determinata parola chiave del titolo. Ci sono 100 risultati. Stai visualizzando i dati in una forma impaginata - 10 risultati per "pagina". È più efficiente effettuare una chiamata e ottenere tutti i risultati o effettuare una chiamata per il prossimo 10 su ogni pagina?

Immagino sia in parte determinato da quanti risultati ci sono. Se è un numero enorme, la seconda opzione sembra chiara. Ma qual è un buon limite al numero che puoi ottenere in una chiamata: 100, 1000, 10.000 articoli?

risposta

0

Dipende.

Ovviamente, si desidera mantenere l'utilizzo della larghezza di banda al minimo, ma c'è anche un sovraccarico per ogni singola chiamata. Dovrai fare alcune ipotesi plausibili, soprattutto: quanto è probabile che avrai bisogno dei dati delle pagine da 2 a 100?

Se è molto probabile (ad esempio, nel 90% dei casi gli utenti stanno per scegliere attraverso molte pagine dello stesso set di risultati), quindi mi piacerebbe scaricare l'intero risultato in una sola volta, ma per il resto, io' d carica le singole pagine mentre vai.

Un'altra cosa da tenere a mente è la latenza. Ogni chiamata Ajax ha una certa latenza, a seconda della distanza (nella topologia di rete, non necessariamente geografica) tra client e server. Per il primo caricamento, la latenza è inevitabile, ma dopo ciò, è necessario chiedersi se la risposta rapida è importante. In circostanze normali, è previsto e accettabile, ma se il tipico caso d'uso prevede di passare da una pagina all'altra e viceversa, potrebbe diventare una seccatura, e potresti prendere in considerazione l'acquisto di problemi per un tempo di caricamento iniziale più lungo.

Se si desidera caricare più pagine, ma il set di risultati è troppo grande (ad esempio, migliaia o milioni di pagine), si potrebbe pensare a schemi più sofisticati, ad esempio, scaricare la pagina richiesta e il prossimo 10 o scaricare la pagina richiesta immediatamente e quindi precarica le successive 10 pagine in background.

1

Generalmente, ogni chiamata ajax ha una testa e riducendo il numero di chiamate diverse rende il rendimento migliore .. meno che i dati è grande ...

In paging è generalmente migliore di non recuperare tutti i dati dal cominciando perché di solito gli utenti non si muovono attraverso tutte le pagine .. quindi potresti abbassare il carico sul server non spostando i dati .... da un'altra parte, se i dati sono relativamente piccoli o ritieni che l'utente debba vedere tutti i dati, li preleva per salvare l'overhead di chiamate diverse ...

Problemi correlati