2011-10-08 11 views
6

Podczas pobierania listy pozycji za pomocą wywołania json lepiej jest użyć kilku małych połączeń (aby uzyskać informacje, jak to jest potrzebne) lub jednego dużego połączenia ze wszystkimi danymi.Ile danych powinno odzyskać jedno połączenie JSON?

Na przykład masz wywołanie json, aby uzyskać listę książek pasujących do określonego słowa kluczowego tytuł. Jest 100 wyników. Wyświetlasz dane w formie stronicowanej - 10 wyników na "stronę". Czy efektywniej jest wykonać jedno połączenie i uzyskać wszystkie wyniki lub zadzwonić do kolejnych 10 na każdej stronie?

Wyobrażam sobie, że częściowo zależy to od liczby wyników. Jeśli jest to ogromna liczba, druga opcja wydaje się jasna. Ale jaki jest dobry limit liczby, którą można uzyskać w jednym wywołaniu - 100, 1000, 10 000 przedmiotów?

Odpowiedz

0

To zależy.

Oczywiście, chcesz ograniczyć wykorzystanie przepustowości do minimum, ale istnieje również obciążenie dla każdego połączenia. Będziesz musiał wyrobić sobie pewne domysły, najważniejsze: jak prawdopodobne jest, że będziesz potrzebował danych ze stron od 2 do 100?

Jeśli jest bardzo prawdopodobne (powiedzmy, w 90% przypadków użytkownicy będą klikać wiele stron tego samego zestawu wyników), to pobierałbym cały wynik za jednym razem, ale poza tym, ja " d ładuj poszczególne strony na bieżąco.

Inną rzeczą, o której trzeba pamiętać, jest opóźnienie. Każde wywołanie ajaxowe ma pewne opóźnienie, w zależności od odległości (w topologii sieci, niekoniecznie geograficznej) między klientem a serwerem. W przypadku pierwszego obciążenia opóźnienie jest nieuniknione, ale po tym trzeba zadać sobie pytanie, czy szybka reakcja jest ważna. W normalnych okolicznościach jest to oczekiwane i akceptowalne, ale jeśli typowy przypadek użycia obejmuje wielokrotne przewracanie stron między stronami, może to być uciążliwe, a Ty możesz rozważyć zakup zadowolenia na dłuższy początkowy czas ładowania.

Jeśli chcesz załadować wiele stron, ale zestaw wyników jest zbyt duży (np. Tysiące lub miliony stron), możesz pomyśleć o bardziej wyrafinowanych schematach, np. Pobrać żądaną stronę i następne 10 lub pobrać żądana strona natychmiast, a następnie wstępnie pobierać kolejne 10 stron w tle.

1

Generalnie każdy ajax wywołanie ma narzut i obniżenie liczby różnych połączeń sprawia, że ​​wydajność lepiej .. chyba że dane są duże ...

W stronicowania jest generalnie lepiej nie pobrać wszystkie dane z zaczynając, ponieważ zwykle użytkownicy nie przechodzą przez wszystkie strony, więc można obniżyć obciążenie na serwerze, nie przenosząc danych ... z drugiej strony, jeśli dane są względnie małe lub uważasz, że użytkownik będzie musiał zobaczyć wszystkie dane, pobrać je, aby zapisać narzut różnych połączeń ...

Powiązane problemy