Details zum E-Book

Wydajne aplikacje internetowe. Przewodnik

Wydajne aplikacje internetowe. Przewodnik

Ilya Grigorik

E-book

Buduj wydajne aplikacje internetowe!

Aplikacje internetowe systematycznie wypierają swoje klasyczne odpowiedniki. Edytory tekstu, programy graficzne czy systemy CRM w wersji online nikogo już nie zaskakują. Coraz bardziej skomplikowane narzędzia dostępne za pośrednictwem przeglądarki internetowej wymagają od deweloperów znakomitej znajomości protokołów HTTP, XHR, WebSocket i nie tylko. Dzięki tej wiedzy są oni w stanie tworzyć wydajne aplikacje, które spełnią oczekiwania użytkowników.

Ta książka to najlepsze źródło informacji poświęcone protokołom internetowym. Przygotowana przez inżyniera Google’a, odpowiedzialnego za wydajność, zawiera szereg cennych informacji, które pozwolą Ci ulepszyć Twoje własne aplikacje. W trakcie lektury dowiesz się, jak osiągnąć optymalną wydajność protokołów TCP, UDP i TLS oraz jak wykorzystać możliwości sieci mobilnych 3G/4G. W kolejnych rozdziałach zaznajomisz się z historią protokołu HTTP, poznasz jego mankamenty oraz sposoby rozwiązywania problemów. Zorientujesz się też w nowościach, jakie ma wprowadzić HTTP w wersji 2.0. W końcu odkryjesz, co mogą Ci zaoferować WebSocket oraz WebRTC, a dodatkowo poznasz skuteczne techniki strumieniowania danych w sieci Internet. Książka ta jest obowiązkową lekturą dla każdego programisty tworzącego aplikacje internetowe!

Dzięki tej książce:

  • poznasz najlepsze techniki optymalizacji ruchu w sieci
  • wykorzystasz potencjał sieci bezprzewodowych oraz mobilnych
  • zaznajomisz się z historią protokołu HTTP i jego mankamentami
  • zobaczysz, jak nawiązać połączenie peer-to-peer za pomocą WebRTC
  • zbudujesz wydajną aplikację internetową

Poznaj niuanse pozwalające na zbudowanie szybkiej aplikacji internetowej!

Przedmowa (11)

Wstęp (13)

CZĘŚĆ I. SIECI (17)

1. Podstawowe informacje na temat opóźnień i przepustowości (19)

  • Prędkość jest cechą (19)
  • Różne składniki opóźnień (20)
  • Prędkość światła i opóźnienie propagacji (22)
  • Opóźnienia ostatniego kilometra (23)
  • Przepustowość w sieciach rdzeniowych (24)
  • Przepustowość na brzegach sieci (25)
  • Zapewnianie wysokich przepustowości i niskich opóźnień (26)

2. Budowanie bloków TCP (29)

  • Procedura three-way handshake (30)
  • Zapobieganie zatorom i kontrola przeciążenia (32)
    • Sterowanie przepływem (33)
    • Powolny start (34)
    • Zapobieganie zatorom (40)
  • Produkt opóźnienia i przepustowości (41)
  • Blokowanie typu HOL (43)
  • Optymalizacja TCP (45)
    • Konfiguracja serwera dostrajającego (46)
    • Dostrajanie zachowań aplikacji (47)
    • Lista porad dotyczących wydajności (47)

3. Budowanie bloków UDP (49)

  • Usługi protokołu zerowego (50)
  • UDP i bramki NAT (51)
    • Limity czasu stanu połączenia (53)
    • Techniki przechodzenia przez bramki NAT (53)
    • STUN, TURN oraz ICE (55)
  • Optymalizacje dla protokołu UDP (57)

4. Protokół TLS (59)

  • Szyfrowanie, uwierzytelnianie oraz integralność danych (60)
  • Procedura handshake TLS (62)
    • Rozszerzenie ALPN (64)
    • Rozszerzenie Server Name Indication (SNI) (66)
  • Wznowienie sesji TLS (66)
    • Identyfikatory sesji (67)
    • Bilety sesji (68)
  • Łańcuch zaufania i urzędy certyfikacji (69)
  • Wycofanie certyfikatu (71)
    • Lista unieważnionych certyfikatów (71)
    • Protokół OCSP (72)
  • Protokół TLS rekordu (73)
  • Optymalizacja TLS (74)
    • Koszty obliczeniowe (74)
    • Wcześniejsze zakończenie (75)
    • Buforowanie sesji i bezstanowe wznowienie (77)
    • Rozmiar rekordu TLS (78)
    • Kompresja TLS (79)
    • Długość łańcucha certyfikatów (80)
    • Zszywanie protokołu OCSP (81)
    • Protokół HSTS (82)
  • Lista porad dotyczących wydajności (82)
  • Testowanie i weryfikacja (83)

CZĘŚĆ II. WYDAJNOŚĆ SIECI BEZPRZEWODOWYCH (85)

5. Wprowadzenie do sieci bezprzewodowych (87)

  • Powszechny dostęp (87)
  • Typy sieci bezprzewodowych (88)
  • Podstawowe czynniki wpływające na wydajność sieci bezprzewodowych (89)
    • Szerokość pasma (89)
    • Siła sygnału (92)
    • Modulacja (94)
  • Mierzenie wydajności bezprzewodowej w rzeczywistym świecie (94)

6. Wi-Fi (97)

  • Od Ethernetu do bezprzewodowej sieci LAN (97)
  • Standardy i cechy Wi-Fi (99)
  • Pomiar i optymalizacja wydajności Wi-Fi (100)
    • Utrata pakietów w sieciach Wi-Fi (102)
  • Optymalizacja sieci Wi-Fi (102)
    • Wykorzystanie niemierzalnej przepustowości (103)
    • Dostosowanie się do zmiennej przepustowości (103)
    • Dostosowanie się do zmiennych opóźnień (104)

7. Sieci komórkowe (107)

  • Krótka historia sieci G (107)
    • Pierwsze usługi transmisji danych w sieciach 2G (108)
    • Wspólne projekty 3GPP oraz 3GPP2 (109)
    • Ewolucja technologii 3G (111)
    • Wymagania standardu IMT-Advanced 4G (113)
    • Long Term Evolution (LTE) (114)
    • HSPA+ jako światowy lider w przysposobieniu standardu 4G (115)
    • Budowanie wielogeneracyjnej przyszłości (116)
  • Funkcje i możliwości urządzeń (118)
    • Kategorie sprzętu użytkownika (118)
  • Protokół RRC (120)
    • Wymagania dotyczące zasilania w sieciach 3G, 4G oraz Wi-Fi (122)
    • Automat skończony RRC dla standardu LTE (123)
    • Automat skończony RRC dla standardów HSPA i HSPA+ (UMTS) (125)
    • Automat skończony RRC dla standardu EV-DO (CDMA) (127)
    • Nieefektywność transferów okresowych (128)
  • Docelowa architektura operatora komórkowego (129)
    • Sieć radiowa (RAN) (130)
    • Sieć rdzeniowa (131)
    • Pojemność i opóźnienie systemów dosyłowych (134)
  • Przepływ pakietów w sieci komórkowej (134)
    • Inicjowanie żądania (135)
    • Przepływ danych przychodzących (137)
  • Sieci heterogeniczne (HetNet) (139)
  • Wydajność sieci 3G, 4G oraz Wi-Fi w rzeczywistym świecie (141)

8. Optymalizacja sieci komórkowych (143)

  • Oszczędzanie baterii (144)
  • Wyeliminowanie okresowych i nieefektywnych transferów danych (146)
    • Eliminowanie zbędnych połączeń keepalive w aplikacjach (148)
  • Przewidywanie poziomu opóźnienia sieciowego (149)
    • Uwzględnianie zmian stanów RRC (150)
    • Oddzielenie interakcji użytkownika od komunikacji sieciowej (150)
  • Projektowanie przy uwzględnieniu zmiennej dostępności do interfejsu sieciowego (151)
  • Transmisja seryjna i powrót do stanu bezczynności (153)
  • Przerzucanie obciążenia na sieci Wi-Fi (154)
  • Stosuj najlepsze praktyki dla protokołu i aplikacji (154)

CZĘŚĆ III. HTTP (157)

9. Krótka historia protokołu HTTP (159)

  • HTTP 0.9 - protokół dla jednego połączenia (159)
  • HTTP 1.0 - gwałtowny rozwój i specyfikacja RFC (160)
  • Protokół HTTP 1.1 - standard internetu (162)
  • HTTP 2.0 - zwiększenie wydajności transmisji danych (164)

10. Wprowadzenie do wydajności aplikacji WWW (167)

  • Hipertekst, strony i aplikacje WWW (167)
  • Anatomia nowoczesnej aplikacji WWW (170)
    • Szybkość, wydajność i wrażenia użytkownika (171)
    • Analiza wodospadu zasobów (172)
  • Filary wydajności - przetwarzanie, wyświetlanie, transmisja danych (176)
    • Szersze pasmo nie ma (większego) znaczenia (177)
    • Opóźnienie sieciowe, wąskie gardło w wydajności (177)
  • Syntetyczny i rzeczywisty pomiar wydajności (179)
  • Optymalizacja przeglądarki (182)

11. Protokół HTTP 1.X (187)

  • Korzyści z podtrzymywania połączeń (189)
  • Kolejkowanie żądań HTTP (192)
  • Użycie wielu połączeń TCP (195)
  • Rozdrobnienie domeny (197)
  • Pomiar i kontrola narzutu protokołu (199)
  • Konkatenacja i kompozycja zasobów (200)
  • Osadzanie zasobów (203)

12. Protokół HTTP 2.0 (205)

  • Historia protokołu i jego związek ze SPDY (206)
  • Droga do HTTP 2.0 (206)
  • Cele projektowe i techniczne (208)
    • Warstwa ramkowania binarnego (209)
    • Strumienie, komunikaty i ramki (210)
    • Multipleksacja żądań i odpowiedzi (211)
    • Priorytety żądań (212)
    • Jedno połączenie na serwer (214)
    • Sterowanie przepływem (214)
    • Wypychanie zasobów (216)
    • Kompresja nagłówka (218)
    • Skuteczna aktualizacja i wykrywanie protokołu HTTP 2.0 (220)
  • Krótkie wprowadzenie do ramkowania binarnego (222)
    • Inicjowanie nowego strumienia (224)
    • Przesyłanie danych aplikacyjnych (224)
    • Analiza przepływu ramek DATA w protokole HTTP 2.0 (225)

13. Optymalizacja aplikacji (227)

  • Zawsze aktualne najlepsze praktyki wydajnościowe (229)
    • Zapamiętywanie zasobów po stronie klienta (230)
    • Przesyłanie skompresowanych danych (231)
    • Eliminacja niepotrzebnych bajtów żądań (232)
    • Równoległe przetwarzanie żądań i odpowiedzi (233)
  • Optymalizacja protokołu HTTP 1.x (234)
  • Optymalizacja protokołu HTTP 2.0 (235)
    • Usunięcie optymalizacji 1.x (236)
    • Strategie optymalizacyjne w przypadku dwóch protokołów (237)
    • Translacja protokołu 1.x na 2.0 i z powrotem (239)
    • Ocena jakości i wydajności serwera (240)
    • Komunikacja 2.0 z protokołem TLS i bez niego (240)
    • Serwery obciążenia, proxy i aplikacji (241)

CZĘŚĆ IV. INTERFEJSY API I PROTOKOŁY PRZEGLĄDARKI (243)

14. Podstawy komunikacji sieciowej przeglądarek (245)

  • Zarządzanie połączeniami i ich optymalizacja (246)
  • Bezpieczeństwo sieciowe i izolacja aplikacji (248)
  • Przechowywanie zasobów i stanu klienta (248)
  • Interfejsy API i protokoły aplikacyjne (249)

15. Protokół XMLHttpRequest (251)

  • Krótka historia protokołu XHR (252)
  • Międzydomenowe współdzielenie zasobów (CORS) (253)
  • Pobieranie danych za pomocą XHR (256)
  • Wysyłanie danych za pomocą XHR (257)
  • Monitorowanie postępu pobierania i wysyłania danych (258)
  • Strumieniowanie danych za pomocą XHR (260)
  • Powiadamianie i dostarczanie danych w czasie rzeczywistym (262)
    • Odpytywanie w protokole XHR (262)
    • Długotrwałe odpytywanie w protokole XHR (264)
  • Przykłady użycia i wydajność protokołu XHR (266)

16. Server-Sent Events (SSE) (269)

  • Interfejs EventSource API (269)
  • Protokół strumienia zdarzeń (271)
  • Zastosowanie i wydajność protokołu SSE (274)

17. WebSocket (277)

  • Interfejs WebSocket API (278)
    • Schematy adresów URL w protokołach WS oraz WSS (279)
    • Odbieranie danych tekstowych i binarnych (279)
    • Wysyłanie danych tekstowych i binarnych (281)
    • Negocjacja subprotokołu (282)
  • Protokół WebSocket (283)
    • Warstwa ramkowania binarnego (284)
    • Rozszerzenia protokołu (286)
    • Negocjacja Upgrade w protokole HTTP (286)
  • Zastosowanie i wydajność protokołu WebSocket (289)
    • Strumieniowanie żądań i odpowiedzi (290)
    • Narzut komunikatów (291)
    • Wydajność i kompresja danych (291)
    • Własne protokoły aplikacyjne (292)
    • Wdrożenie protokołu WebSocket (293)
  • Wydajnościowa lista kontrolna (294)

18. Komunikacja WebRTC (297)

  • Standardy i rozwój komunikacji WebRTC (298)
  • Usługi audio i wideo (298)
    • Pozyskiwanie strumienia audio i wideo za pomocą metody getUserMedia (300)
  • Transmisja sieciowa w czasie rzeczywistym (302)
    • Krótkie wprowadzenie do interfejsu RTCPeerConnection API (304)
  • Nawiązanie połączenia peer-to-peer (306)
    • Sygnalizacja i negocjacja sesji (307)
    • Protokół Session Description Protocol (SDP) (309)
    • Protokół Interactive Connectivity Establishment (ICE) (311)
    • Przyrostowe zbieranie danych (Trickle ICE) (314)
    • Przyrostowe zbieranie danych ICE i status połączenia (315)
    • Zebranie wszystkich elementów (317)
  • Przesyłanie mediów i danych aplikacyjnych (321)
    • Protokół Datagram Transport Layer Security (321)
    • Przesyłanie mediów w protokołach SRTP i SRTCP (323)
    • Przesyłanie danych aplikacyjnych za pomocą protokołu SCTP (326)
  • Protokół DataChannel (331)
    • Konfiguracja i negocjacja połączenia (333)
    • Konfiguracja kolejności i gwarancji dostarczania komunikatów (335)
    • Częściowa gwarancja dostarczania a wielkość pakietu (337)
  • Zastosowanie i wydajność komunikacji WebRTC (337)
    • Strumieniowanie audio, wideo i danych (338)
    • Architektury połączeń wielostronnych (339)
    • Planowanie infrastruktury i pojemności (340)
    • Wydajność i kompresja danych (342)
  • Wydajnościowa lista kontrolna (342)

Skorowidz (345)

  • Titel: Wydajne aplikacje internetowe. Przewodnik
  • Autor: Ilya Grigorik
  • Originaler Titel: High Performance Browser Networking
  • Übersetzung: Andrzej Watrak
  • ISBN: 978-83-246-8895-1, 9788324688951
  • Veröffentlichungsdatum: 2014-06-20
  • Format: E-book
  • Artikelkennung: wydapi
  • Verleger: Helion