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

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

Link . Если клиент поддерживает сжатие словаря Brotli, но еще не кэшировал общий словарь, браузер загружает его во время простоя. Ответ со словарем включает заголовок 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 от Net-InternalsРезультаты
Изменение было внедрено для пользователей поиска весной 2025 года, первоначально для пользователей Chrome. Это позволило уменьшить средний размер HTML-кода для всех пользователей Chrome на 23% по сравнению со стандартным сжатием Brotli. Этот общий средний показатель включает как результаты, не сжатые с помощью словаря (например, для пользователей, впервые использующих поиск без словаря), так и результаты поиска, сжатые с помощью словаря. Для результатов, сжатых с помощью словаря, экономия еще больше — как мы видели на примере с улучшением почти на 50%, рассмотренном ранее.
Это привело к улучшению показателя Largest Contentful Paint (LCP) на 1,7% в целом и до 9% в сетях с высокой задержкой. Это может показаться незначительным, но Google Search — это сайт с гипероптимизацией, поэтому прирост такого масштаба огромен. Другие сайты могут увидеть еще большие улучшения благодаря этой технологии.
Попробуйте это на своём сайте!
Технология Compression Dictionary Transport теперь доступна для использования во всех браузерах на основе Chromium (Chrome, Edge, Opera и т. д.). Это постепенное улучшение, которое будет игнорироваться браузерами, не поддерживающими эту технологию, но по мере того, как всё больше браузеров будут её поддерживать, они также смогут получить от неё выгоду.
Проблемы, которые решает эта технология, далеко не ограничиваются поиском Google. Многие сайты могут извлечь выгоду из использования технологии Compression Dictionary Transport, будь то с отдельным словарем, как это использовалось в поиске, или с использованием существующего ресурса в качестве словаря (например, предыдущей версии приложения при выпуске новой версии).
Для получения более подробной информации о том, как работает эта технология и как вы можете внедрить ее на своем сайте, ознакомьтесь с руководством на MDN.
Для этого потребуется некоторая настройка на вашем сервере или в процессе сборки для создания сжатых ресурсов на основе словарей и их соответствующей доставки, но результаты могут быть действительно впечатляющими с точки зрения производительности!