24 октября 2013 г.

Google и веб-адреса

По материалам статьи: Talk like a Googler

Хотя сейчас Google пытается скрыть веб-адреса от пользователя, в диалогах между разработчиками веб-адрес и его части не могут не упоминаться. Мэтт Каттс (Matt Cutts) несколько лет назад рассказал о том, как это происходит в Google, и этот рассказ хорош. Хотя порой требует комментариев (даны курсивом; рассказ Каттса дан цитатами).

Давайте разберёмся с частями интернет-адреса — URL (uniform resource locator — ‘единообразный указатель ресурса’). Я расскажу, как мы в Google обычно называем разные части интернет-адреса. Вот действующий адрес, состоящий из множества частей:

http://video.google.co.uk:80/videoplay?docid=-7246927612831078230&hl=en#00h02m30s

Указанный адрес уже не действует.

Вот составные части этого адреса:

· Протокол — http. Есть и другие протоколы: https, ftp и т. д.

Строго говоря (согласно RFC 1738; в комментариях к оригиналу упоминаются также RFC 2616 и 2396), не протокол, а схема: «Хотя большинство схем URL носят названия протоколов, это не означает, что единственный способ доступа к указанному ресурсу — это обозначенный протокол». В браузере Chrome используются схемы, которые, как представляется, не относятся к протоколам: chrome и view-source (и, видимо, data — если вспомнить про превращение браузера в текстовый редактор с помощью адреса data:text/html, <html contenteditable>).

· Хост (host) — video.google.co.uk.

· Поддомен (subdomain) — video.

· Доменное имя (domain name) — google.co.uk.

· Домен верхнего уровня (top-level domain), TLD — uk. В данном случае это также и национальный домен (country-code top-level domain), ccTLD. Для адреса google.com домен верхнего уровня будет com.

· Домен второго уровня (second-level domain), SLD — co.uk.

· Порт — 80. Это порт для веб-серверов по умолчанию. Используются и другие порты — например, 8000. В большинстве случаев порт 80 не указывается.

· Путь (path) — /videoplay. Путь обычно указывает файл или место на веб-сервере, например: /directory/file.html.

· Параметры. В адресе могут быть указаны самые разные параметры. Путь отделяется от параметров воспросительным знаком (?), друг от друга параметры отделяются амперсандом (&). В нашем адресе один из параметров — docid (его значение: -7246927612831078230).

Другой параметр — hl (его значение: en); об этом параметре мы недавно писали.

· Фрагмент (или якорь) — 00h02m30s. Что касается термина, опрошенные сотрудники Google разделились на два лагеря: половина называет это фрагмент, другая половина — якорь. Назначение якоря — указать определённое место внутри документа. В данном случае он означает «перейти к моменту 2 мин 30 сек в видео». В настоящее время Google избавляется от якорей в адресах.

Согласно RFC 3986, этот элемент интернет-адреса называется «идентификатор фрагмента» (fragment identifier), однако по-русски преобладает название «якорь». Использование якорей давно осуждается стандартами и в настоящее время практически полностью искоренено. Однако вместо якорей после октоторпа (#) в  стали помещать параметры сценариев JavaScript, чему Google предлагает альтернативу, позволяющую индексировать такие страницы.

Чем отличается статический адрес от динамического? С техической точки зрения, статический адрес указывает на документ, выводимый веб-сервером без дополнительных вычислений, динамический адрес указывает на документ, для вывода которого веб-сервер должен произвести некоторый вычисления.

Некоторые сводят это различие к очень простому вопросу: «Есть ли в адресе вопросительный знак?» Если он есть, то это динамический адрес; если его нет — статический. Однако это далеко не всегда так: например, адрес http://news.google.com/, который выглядит вполне статическим, требует от веб-сервера вычислений. И всё же большинство считает адрес статическим или динамическим в зависимости от того, есть ли в нём вопросительный знак.