Чтобы сократить время загрузки страниц для наших пользователей, Chrome иногда предварительно загружает ссылки на странице результатов поиска Google и на других участвующих веб-сайтах, прежде чем пользователь нажмет на них. Эта функция подробно описана в этой статье с технической точки зрения.
Эта функция использует прокси-сервер CONNECT
, который скрывает IP-адрес пользователя от веб-сайта, который необходимо предварительно загрузить. В свою очередь, это по своей сути выводит установку соединения из поля зрения сетевых администраторов.
В то же время мы понимаем, что сетевым администраторам может потребоваться фильтровать контент. Итак, мы разработали механизм, с помощью которого сетевые администраторы могут продолжать делать это, даже если пользователь нажимает предварительно загруженную ссылку.
Фильтрация контента
Чтобы сохранить конфиденциальность пользователя, Chrome не будет выполнять какие-либо наблюдаемые запросы DNS при предварительной загрузке ссылок. Если пользователь перейдет по заранее загруженной ссылке, ресурсы страницы будут извлечены из локального кэша без выполнения наблюдаемого поиска DNS. Одним из побочных эффектов является то, что фильтрация контента может работать не так, как предполагалось, когда пользователь переходит по предварительно загруженной ссылке.
Чтобы позволить сетевым администраторам фильтровать контент по этим предварительно выбранным ссылкам, мы разработали механизм сигнализации, который дает Chrome команду выполнять поиск DNS, когда пользователь нажимает на предварительно загруженную ссылку. Этот поиск DNS будет происходить в то же время и таким же образом, как если бы предварительная выборка не выполнялась, предоставляя администраторам такую же возможность фильтровать контент. Chrome приостановит загрузку предварительно выбранных ресурсов из кеша до тех пор, пока второй поиск DNS не завершится успешно. Если это не удастся, Chrome не будет использовать предварительно загруженные ресурсы, а вместо этого загрузит страницу обычным способом. Обратите внимание, что это влечет за собой снижение производительности для пользователя, поскольку Chrome должен дождаться завершения поиска DNS.
Детали сигнального механизма
Для пользователей, которые не отключили предварительную загрузку страниц , Chrome будет асинхронно выполнять поиск DNS для dns-tunnel-check.googlezip.net
при запуске Chrome или при изменении сетевого интерфейса.
Вот возможные результаты проверки dns-tunnel-check.googlezip.net
:
- Если ответом является
NXDOMAIN
илиSERVFAIL
или если возвращается код ответаNOERROR
, но он не содержит ни записейA
, ниAAAA
, Chrome поймет, что сетевым администраторам необходима видимость навигации по предварительно загруженным страницам (см. Режим предварительной проверки ). - Если ответом является любое другое значение, Chrome будет напрямую использовать предварительно загруженные ресурсы и не будет выполнять какие-либо дополнительные запросы DNS, когда пользователь переходит на предварительно загруженную страницу.
Результат этой проверки будет сохраняться до тех пор, пока Chrome не будет перезапущен или пока не изменится сетевой интерфейс, что приведет к новому поиску DNS для dns-tunnel-check.googlezip.net
с потенциально другим результатом.
Предполетный режим
В этом режиме перед переходом на страницу, предварительно загруженную через частный прокси-сервер предварительной выборки, Chrome выполнит поиск DNS для соответствующего домена и дождется ответа:
- Если ответ состоит из непустого набора IP-адресов, Chrome продолжит навигацию, используя предварительно выбранные ресурсы.
- Если ответ
REFUSED
(предпочтительный) илиNXDOMAIN
, Chrome не продолжит навигацию и вместо этого покажет соответствующую страницу с ошибкой DNS.