
Поиск Google из мобильного браузера теперь работает быстрее, а конкретно, на 100-150 миллисекунд. Такое стало возможным благодаря внедрению новой функции, которая называется реактивная предварительная выборка. По-английски она звучит гораздо короче: reactive prefetch.
Когда вы нажимаете на одну из ссылок в результатах поиска, браузер начинает загружать страницу. И здесь есть один трюк, объясняет Илья Григорик из Google: одновременно браузер получает инструкцию, какие критические ресурсы следует загружать параллельными потоками при запросе веб-страницы. Такая параллельная загрузка сильно ускоряет общее время рендеринга страницы.
Что важно, такой метод вовсе не увеличивает трафик. Здесь нет никакого предварительного кэширования ресурсов. Скачивание начинается только после того, как человек нажал на ссылку. И параллельными потоками он получает то, что и так бы позже загрузил.
Кстати, владельцы веб-сайтов могут использовать аналогичный метод для ссылок на своих сайтах, чтобы ускорять загрузку и рендеринг страниц.
На своём сайте можно сделать это гораздо проще и эффективнее, потому что мы можем точно узнать список критических ресурсов, которые грузятся в браузер последними и замедляют рендеринг. А вот инженеры Google автоматизировали процедуру, применив всяческие хитрые трюки.
Во-первых, они составили список критических ресурсов для всех страниц в вебе! Одно это уже дорогого стоит. Только представьте, нужно проанализировать рендеринг каждой страницы в мобильном браузере. Предположительно, тысячи виртуальных машин загружали страницы и записывали логи, которые потом обрабатывались отдельно.
Во-вторых, для передачи браузеру команды на реактивную предвыборку следует реализовать данную функцию в API. Это работает через динамическое изменение веб-страницы. Соответствующий код вставляется в страницу немедленно после того, как пользователь нажал на ссылку.
В конце концов, и браузер должен уметь скачивать ресурсы параллельными потоками.
В данный момент реактивная предвыборка активирована только для пользователей Chrome на Android. Это единственный браузер, которые поддерживает динамическое внедрение prefetch-кода в веб-страницу и надёжно обрабатывает prefetch-запросы.