wyniki badania wydajności różnych metod pobierania kolekcji zasobów, używając protokołów HTTP/1.1, HTTP/2 i HTTP/2 + Server Push do komunikacji z serwerem. W badaniu oceniono również wpływ obecności żądanych danych w pamięci podręcznej przeglądarki oraz manipulacje zasobami na poziomie logiki aplikacji (łączenie zasobów w jeden blok JSON).
Test wydajności wykonywania 25 zapytań wykazał ogólnie przewidywalne wyniki — zauważalne opóźnienie zapytania przez HTTP/1.1 przy pustej pamięci podręcznej oraz przewagę wydajności zasobów w jednym bloku (testy oznaczone 'compound'). Wydajność Firefox i Chrome była na podobnym poziomie, jednak obecność danych w pamięci podręcznej nie przyniosła oczekiwanego wzrostu efektywności.
Jednak w teście obciążenia 500 zapytań pojawiło się zauważalne opóźnienie Chrome w porównaniu do Firefox przy przesyłaniu dużej liczby zapytań oraz opóźnienie Firefox w porównaniu do Chrome przy użyciu mechanizmu Server Push i w sytuacji, gdy HTTP/2 miało dostęp do większości danych w pamięci podręcznej przeglądarki. Chrome wykazał bardziej efektywne zarządzanie pamięcią podręczną, a Firefox bardziej efektywną obsługę zewnętrznych zapytań.
Na podstawie wyników testów stwierdzono, że HTTP/2 umożliwia dość efektywne przetwarzanie oddzielnych zapytań dużej kolekcji zasobów. Różnice wydajności prostych schematów oddzielnego dostarczania zasobów w porównaniu do metod, w których zasoby są agregowane w jeden blok, nie są na tyle istotne, aby uzasadnić znaczną komplikację logiki przetwarzania po stronie aplikacji, serwera. Agregacja ma sens tylko w sytuacjach, w których wydajność ma najwyższy priorytet. Gdy ważniejsze jest uproszczenie logiki i prosty API, sensowne jest stosowanie oddzielnego przetwarzania zasobów.
Innym wnioskiem jest to, że pamięć podręczna przeglądarki przy użyciu HTTP/2 nie ma znacznego wpływu na wydajność przetwarzania żądań (całkowite wykonanie 501 żądania okazało się wolniejsze od wykonania 51 żądania przy 90% wypełnienia pamięci podręcznej w Firefoxie 1,2 razy oraz 2,3 razy w Chrome). Wykorzystanie Server Push nie przyniosło znaczących korzyści w Firefoxie, ale okazało się skuteczne przy ładowaniu dużej liczby zasobów w Chrome. Autorzy badania zauważyli również, że optymalizacja części serwerowej ma większy wpływ na wydajność niż optymalizacja kodu klienta wykonywanego w przeglądarce.
Źródło: opennet.ru
