Опубликовано: 14 мая 2025 г.
Транспорт словаря сжатия – это новый стандарт, который позволяет нам сжимать повторяющийся контент в разных запросах. Он был выпущен в Chrome 130 в конце 2024 года. Google Search внедрил эту новую технологию и добился огромных улучшений.
Возможность
На веб-страницах, которые мы посещаем, много дублирования. Многие страницы одного и того же веб-сайта состоят из больших частей одного и того же кода — будь то HTML, CSS или JavaScript, при этом меняется только содержимое между всем этим кодом. Хотя каждый результат представляет собой уникальную комбинацию сотен функций, в результате чего создается совершенно уникальный контент, в коде, отправляемом в браузер для их создания, все же есть много общего.
Визуально большинство страниц результатов поиска в чем-то похожи независимо от введенного поискового запроса: вверху у нас есть логотип Google, панель поиска и некоторые элементы управления. В середине у нас есть несколько вкладок для типа поиска, а затем список результатов поиска слева, разделенный различными виджетами, помогающими пользователю, и дополнительный контекст справа с панелями «О программе»:

Наконец, внизу у нас есть параметры нумерации страниц и стандартный нижний колонтитул. Это только то, что доступно визуально — за кулисами находится много кода (HTML, CSS и JavaScript) для создания этой страницы. Большая часть этого кода встроена непосредственно в HTML-код страницы в целях оптимизации производительности. Хотя это действительно позволяет ускорить загрузку страницы, за это приходится платить, поскольку этот код не используется разными страницами результатов, как это позволяет внешний кешированный ресурс.
Сжатие в Интернете
Сжатие — широко используемая технология в Интернете. Сжатие ресурсов с помощью gzip или более новых алгоритмов, таких как Brotli или Zstandard, позволяет избежать повторения в файле за счет сжатия без потерь, чтобы как можно плотнее упаковать всю информацию на сервере перед отправкой. Затем браузер может распаковать сжатые байты, чтобы восстановить исходное содержимое. Для изображений сжатие с потерями предлагает аналогичные преимущества, удаляя лишние байты, которые могут быть незаметны для пользователей.
До недавнего времени сжатие в Интернете ограничивалось сжатием ресурсов. Невозможно было сжимать данные на разных ресурсах и уж тем более на разных страницах. Это уже давно признано ограничением, которое веб-инженеры пытались устранить.
Словарь сжатия Транспорт спешит на помощь!
Транспорт словаря сжатия — это новый стандарт, который позволяет осуществлять сжатие ресурсов с использованием общих «словарей», которые позволяют заменять общие серии байтов ссылками из этого общего словаря.
Современные алгоритмы сжатия, такие как Brotli и Zstandard, поддерживают использование словарей общих терминов, что позволяет добиться большего сжатия за счет замены этих терминов меньшими ссылками на словарь. Brotli даже поставляется со встроенным словарем общих веб-терминов. Транспорт словарей сжатия основан на этом, предоставляя серверу и браузеру возможность совместного использования пользовательских словарей.
Пользовательские словари могут быть ресурсом, который уже используется на сайте. Например, вы можете использовать app.v1.js
в качестве словаря при загрузке app.v2.js
, чтобы загрузить только разницу (часто называемую «дельта-сжатием»). В качестве альтернативы можно указать отдельный ресурс словаря с помощью тега <link rel="compression-dictionary">
(или эквивалентного HTTP-заголовка Link
).
Это может значительно уменьшить размер загрузки ресурсов с большим количеством общего контента или кода, таких как страницы результатов поиска, упомянутые ранее.
Использование словарей сжатия в Google Поиске
Команда Google Поиска постоянно работает над улучшением его эффективности . Они были одними из первых, кто внедрил словари сжатия, поскольку увидели потенциал этой технологии.
Поиск использует общее сжатие Brotli для своих страниц результатов с отдельным файлом словаря, созданным на основе репрезентативной выборки результатов поиска. Надежный автоматизированный конвейер гарантирует, что словарь будет оставаться актуальным, следя за часто меняющимся содержимым SRP, которое выпускается несколько раз в день. Вы можете использовать DevTools, чтобы увидеть, как именно это работает.
Когда клиент впервые загружает страницу результатов поиска, сервер предоставляет ссылку на словарь, используя HTTP-заголовок Link:
с типом rel=compression-dictionary
:

Link
на вкладке «Сеть» Если клиент поддерживает сжатие словаря Бротли, но еще не кэшировал общий словарь, браузер загружает этот словарь во время простоя. Ответ словаря включает заголовок ответа Use-As-Dictionary
, который сообщает браузеру, для каких ресурсов он может использовать этот словарь:

Use-As-Dictionary
на вкладке «Сеть» Словарь будет использовать стандартную семантику cache-control
и будет доступен для любых ресурсов, соответствующих правилам, определенным в этом заголовке — в этом примере страницы начинаются с /search
.
При будущих загрузках страниц результатов поиска браузер может сообщить серверу, что у него есть словарь, используя заголовок HTTP-запроса Available-Dictionary
. Перезагрузка страницы показывает это в действии:

Available-Dictionary
на вкладке «Сеть»При включенном флажке «Сохранить журнал» и фильтрации мы можем сравнить два ответа:

В этом примере первый запрос представляет собой полный ответ размером 107 КБ и использует сжатие Brotli ( br
), тогда как второй запрос на перезагрузку имеет размер почти вдвое меньше и составляет 60 КБ и использует сжатие Brotli со сжатием по словарю ( dcb
), что приводит к ускорению загрузки.
В Chrome вы можете просмотреть страницу chrome://net-internals/#sharedDictionary
чтобы просмотреть общие словари и очистить их, если хотите повторить этот пример с самого начала.

#sharedDictionary
Результаты
Это изменение было распространено на пользователей поиска весной 2025 года, первоначально для пользователей Chrome. Это уменьшило средний размер полезной нагрузки HTML для всех пользователей Chrome на 23% по сравнению со стандартным сжатием Brotli. Это общее среднее значение включает как результаты поиска, не сжатые по словарю (например, впервые использующие словарь), так и результаты поиска, сжатые по словарю. Для результатов, сжатых по словарю, экономия еще больше — как мы видели на примере улучшения почти на 50% в предыдущем примере, который мы рассматривали.
Это привело к улучшению крупнейшего контента (LCP) на 1,7% в целом и до 9% в сетях с высокой задержкой. Это может показаться незначительным, но Google Search — это гипероптимизированный сайт, поэтому выгоды такого масштаба огромны. Другие сайты могут увидеть еще большие улучшения с помощью этой технологии.
Попробуйте на своем сайте!
Транспорт словаря сжатия теперь готов к использованию во всех браузерах на базе Chromium (Chrome, Edge, Opera и т. д.). Это прогрессивное улучшение, которое будет проигнорировано неподдерживающими его браузерами, но по мере того, как все больше браузеров его поддерживают, они тоже могут получить от этого выгоду.
Проблемы, которые решает эта технология, далеко не специфичны для Google Поиска. Многие сайты могут извлечь выгоду из транспорта словаря сжатия, будь то с использованием отдельного словаря, такого как поиск, или с использованием существующего ресурса в качестве словаря (например, предыдущей версии приложения при развертывании новой версии).
Ознакомьтесь с руководством по MDN для получения более подробной информации о том, как работает эта технология и как вы можете реализовать ее на своем сайте.
Это требует некоторой настройки на вашем сервере или процесса сборки для создания сжатых ресурсов на основе словаря и их надлежащего обслуживания, но результаты могут быть очень впечатляющими с точки зрения производительности!