Usprawnianie wyszukiwarki Google dzięki słownikom kompresji

Opublikowano: 14 maja 2025 r.

Transport słownika kompresji to nowy standard, który umożliwia kompresowanie powtarzających się treści w żądaniach. Został on wprowadzony w Chrome 130 pod koniec 2024 r. Wyszukiwarka Google wdrożyła tę nową technologię i odnotowała ogromne postępy.

Pomysł

Na odwiedzanych przez nas stronach internetowych występuje wiele duplikatów. Wiele stron w tej samej witrynie składa się z dużych fragmentów tego samego kodu – HTML, CSS lub JavaScript – przy czym zmienia się tylko treść między tymi fragmentami. Każdy wynik jest unikalnym połączeniem setek funkcji, co daje całkowicie unikalne treści, ale w kodzie wysyłanym do przeglądarki w celu ich wygenerowania jest wiele elementów wspólnych.

Większość stron wyników wyszukiwania jest wizualnie podobna niezależnie od wpisanego hasła. U góry znajduje się logo Google, pasek wyszukiwania i kilka elementów sterujących. Pośrodku mamy kilka kart z typem wyszukiwania, a po lewej stronie listę wyników wyszukiwania z różnymi widgetami, które pomagają użytkownikowi, oraz dodatkowe informacje po prawej stronie w panelach „Informacje o”:

Typowa strona wyników wyszukiwania w Google z paskiem wyszukiwania u góry, wynikami w lewej kolumnie głównej i dodatkowymi informacjami po prawej stronie
Strona wyników wyszukiwania Google

Na dole znajdują się opcje paginacji i standardowy stopka. To tylko to, co jest widoczne. Za kulisami znajduje się dużo kodu (HTML, CSS i JavaScript), który generuje tę stronę. Znaczna część tego kodu jest wstawiana bezpośrednio do kodu HTML strony w celu optymalizacji wydajności. Umożliwia to szybsze wczytywanie strony, ale wiąże się z tym, że kod nie jest udostępniany między różnymi stronami wyników, tak jak w przypadku zasobu przechowywanego w pamięci podręcznej.

Kompresja w internecie

Kompresja jest powszechnie stosowaną technologią w internecie. Kompresowanie zasobów za pomocą gzip lub nowszych algorytmów, takich jak Brotli czy Zstandard, pozwala uniknąć powtórzeń w pliku dzięki kompresji bezstratnej, która umożliwia jak najściślejsze spakowanie wszystkich informacji na serwerze przed wysłaniem. Przeglądarka może następnie rozpakować skompresowane bajty, aby przywrócić pierwotną treść. W przypadku obrazów kompresja stratna zapewnia podobne korzyści, usuwając dodatkowe bajty, które mogą nie być zauważalne dla użytkowników.

Do niedawna kompresja w internecie była ograniczona do kompresji w obrębie zasobów. Nie można było kompresować różnych zasobów, a tym bardziej różnych stron. Od dawna uznawano to za ograniczenie, które inżynierowie internetowi starali się naprawić.

Transport słownika kompresji na ratunek!

Browser Support

  • Chrome: 130.
  • Edge: 130.
  • Firefox Technology Preview: supported.
  • Safari: not supported.

Source

Transport słownika kompresji to nowy standard, który umożliwia kompresję między zasobami dzięki użyciu wspólnych „słowników”, które pozwalają zastępować wspólne ciągi bajtów odwołaniami z tego wspólnego słownika.

Nowoczesne algorytmy kompresji, takie jak Brotli i Zstandard, obsługują użycie słowników z typowymi terminami, co pozwala na większą kompresję dzięki zastępowaniu tych terminów mniejszymi odwołaniami do słownika. Brotli zawiera nawet wbudowany słownik typowych terminów internetowych. Transport słownika kompresji opiera się na tym, umożliwiając serwerowi i przeglądarce udostępnianie niestandardowych słowników.

Niestandardowe słowniki mogą być zasobem, który jest już używany w witrynie. Na przykład podczas pobierania app.v2.js możesz użyć app.v1.js jako słownika, aby pobrać tylko różnicę (często nazywaną „kompresją delta”). Możesz też określić oddzielny zasób słownika za pomocą tagu <link rel="compression-dictionary"> (lub równoważnego nagłówka HTTP Link).

Może to znacznie zmniejszyć rozmiar pobierania zasobów z dużą ilością wspólnych treści lub kodu, takich jak wspomniane wcześniej strony wyników wyszukiwania.

Używanie słowników kompresji w wyszukiwarce Google

Zespół wyszukiwarki Google nieustannie pracuje nad poprawą jej wydajności. Wcześnie zaczął korzystać ze słowników kompresji, ponieważ dostrzegł potencjał tej technologii.

Wyszukiwarka używa wspólnej kompresji Brotli na stronach wyników z oddzielnym plikiem słownika utworzonym na podstawie reprezentatywnej próbki wyników wyszukiwania. Solidny zautomatyzowany potok zapewnia, że słownik jest aktualny, nadążając za często zmieniającymi się treściami na stronie wyników wyszukiwania, które są publikowane kilka razy dziennie. Za pomocą Narzędzi deweloperskich możesz zobaczyć, jak to działa.

Gdy klient po raz pierwszy wczytuje stronę wyników wyszukiwania, serwer udostępnia link do słownika za pomocą nagłówka HTTP Link: z typem rel=compression-dictionary:

Nagłówki HTTP odpowiedzi w Narzędziach deweloperskich w Chrome z wyróżnionym nagłówkiem Link rel=compression-dictionary
Narzędzia deweloperskie w Chrome pokazujące nagłówek Link na karcie Sieć

Jeśli klient obsługuje kompresję słownika Brotli, ale nie ma jeszcze w pamięci podręcznej wspólnego słownika, przeglądarka pobiera ten słownik w czasie bezczynności. Odpowiedź słownika zawiera nagłówek odpowiedzi Use-As-Dictionary, który informuje przeglądarkę, w przypadku jakich zasobów może używać tego słownika:

Nagłówki odpowiedzi HTTP w Narzędziach deweloperskich w Chrome z wyróżnionym nagłówkiem Use-As-Dictionary
Narzędzia deweloperskie w Chrome pokazujące nagłówek Use-As-Dictionary na karcie Sieć

Słownik będzie używać standardowej semantyki cache-control i będzie dostępny dla wszystkich zasobów pasujących do reguł zdefiniowanych w tym nagłówku – w tym przykładzie stron zaczynających się od /search.

W przypadku przyszłych wczytań strony wyników wyszukiwania przeglądarka może poinformować serwer, że ma słownik, za pomocą nagłówka żądania HTTP Available-Dictionary. Ponowne wczytanie strony pokazuje to w działaniu:

Nagłówki HTTP odpowiedzi w Narzędziach deweloperskich w Chrome z wyróżnionym nagłówkiem Available-Dictionary
Narzędzia deweloperskie w Chrome pokazujące nagłówek Available-Dictionary na karcie Sieć

Po włączeniu pola wyboru Zachowaj log i filtrowaniu możemy porównać 2 odpowiedzi:

Porównanie dwóch pobrań tego samego zasobu, z których pierwsze ma rozmiar 107 KB, a drugie – 60 KB
Karta Sieć w Narzędziach deweloperskich w Chrome

W tym przykładzie pierwsze żądanie to pełna odpowiedź o rozmiarze 107 kB, która używa kompresji Brotli (br), a drugie żądanie ponownego wczytania ma prawie połowę rozmiaru (60 kB) i używa kompresji Brotli z kompresją słownika (dcb), co skutkuje szybszym pobieraniem.

W Chrome możesz otworzyć stronę chrome://net-internals/#sharedDictionary, aby wyświetlić udostępnione słowniki i w razie potrzeby je wyczyścić, aby powtórzyć ten przykład od początku.

Strona Słownik udostępniony z jednym słownikiem udostępnionym
Strona Net-Internals #sharedDictionary

Wyniki

Zmiana została wprowadzona dla użytkowników wyszukiwarki Google wiosną 2025 r., początkowo tylko dla użytkowników Chrome. Zmniejszyło to średni rozmiar ładunku HTML u wszystkich użytkowników Chrome o 23% w porównaniu ze standardową kompresją Brotli. Ta ogólna średnia obejmuje zarówno wyniki bez kompresji słownika (np. w przypadku nowych użytkowników bez słownika), jak i wyniki wyszukiwania z kompresją słownika. W przypadku wyników z kompresją słownika oszczędności są jeszcze większe – jak widać w poprzednim przykładzie, w którym odnotowaliśmy prawie 50% poprawę.

Spowodowało to ogólną poprawę największego wyrenderowania treści (LCP) o 1, 7% i do 9% w sieciach o dużym opóźnieniu. Może się to wydawać niewielką wartością, ale wyszukiwarka Google jest witryną hiperzoptymalizowaną, więc takie zyski są ogromne. Inne witryny mogą odnotować jeszcze większe postępy dzięki tej technologii.

Wypróbuj w swojej witrynie!

Transport słownika kompresji jest już gotowy do użycia we wszystkich przeglądarkach opartych na Chromium (Chrome, Edge, Opera itp.). Jest to progresywne ulepszenie, które będzie ignorowane przez przeglądarki, które go nie obsługują, ale gdy więcej przeglądarek zacznie go obsługiwać, będą mogły z niego korzystać.

Problemy, które rozwiązuje ta technologia, nie dotyczą tylko wyszukiwarki Google. Wiele witryn może skorzystać z transportu słownika kompresji, zarówno z oddzielnym słownikiem, jak w przypadku wyszukiwarki, jak i z istniejącym zasobem jako słownikiem (np. z poprzednią wersją aplikacji podczas wdrażania nowej wersji).

Więcej informacji o tym, jak działa ta technologia i jak możesz ją wdrożyć w swojej witrynie, znajdziesz w przewodniku w MDN.

Wymaga to pewnej konfiguracji na serwerze lub w procesie kompilacji, aby tworzyć skompresowane zasoby oparte na słowniku i odpowiednio je udostępniać, ale wyniki mogą być naprawdę imponujące pod względem wydajności.