• управление процессом индексации документа или всего сайта в целом поисковыми роботами;
• описание содержимого документа (также для поисковых роботов);
• управление некоторыми функциями браузеров.
Многие из метатэгов довольно абстрактны, то есть не содержат никаких полезных сведений и не заслуживают внимания с точки зрения агентов. Сами метатэги и их содержание скрыты от посетителя сайта. Однако поисковые машины их находят, а содержащиеся там данные играют не последнюю роль при определении рейтинга страницы. Однако не следует забывать, что некоторые поисковые машины не придают им значения.
Метатэги не несут никакой визуальной информации и располагаются в заголовочной части HTML-документа между тэгами <HEAD> и </HEAD>. В любом другом месте они будут проигнорированы. Особенно важны они для страниц, использующих фреймы.
Существует два вида метатэгов:
• метатэги – эквиваленты HTTP-заголовков, имеющие формат записи: <META HTTP-EQUIV="свойство" CONTENT="значение">
• информационно-указательные, записываемые следующим образом: <META NAME = "свойство" CONTENT="значение">
Элементом META задается свойство, которому присваивается значение. Метатэги первого вида эквивалентны HTTP-заголовкам и обычно управляют действиями браузеров. Они используются, чтобы оптимизировать информацию, которую содержат обычные заголовки, и особенно важны, если документы загружаются по протоколу HTTP (протоколу передачи гипертекста – ftp://ftp.nsc.ru/pub/rfc/rfc2068.txt). Серверы HTTP могут использовать имя свойства, указанное в атрибуте HTTP-EQUIV, для создания заголовка в ответе HTTP. Мета-тэги второго вида чрезвычайно важны для работы поисковых машин.
Элемент META лежит в основе механизма введения метаданных. Существуют, однако, некоторые тэги и атрибуты тэгов языка HTML, которые обрабатывают часть метаданных и могут использоваться авторами вместо элементов META: тэги TITLE, ADDRESS, INS и DEL, атрибуты тэгов TITLE и CITE.
Метатэги – эквиваленты HTTP-заголовков
Для метатэгов этого вида могут быть использованы следующие свойства:
• Expires;
• Pragma;
• Content-Type;
• Content-language;
• Refresh;
• Window-target;
• Content-Script-Type;
• Content-Style-Type.
Рассмотрим их применение.
Свойство Expires
В примере ниже показано, как выглядит формат метатэга со свойством Expires (Дата устаревания):
<META HTTP-EQUIV="Expires" C0NTENT="Mon, 29 Nov 2004 08:21:57 GMT">
Клиенту будет возвращен такой заголовок HTTP:
Expires: Mon, 29 Nov 2004 08:21:57 GMT
Заголовок данного вида используется для управления кэшированием. Если указанный в метатэге срок устаревания истек, то при запросе документа он будет доставлен по сети, а не загружен из кэша.
Нулевое значение даты (C0NTENT="0") приводит к тому, что браузер проверяет при каждом запросе, не изменился ли документ. Поисковые роботы могут либо совсем не индексировать его, либо постоянно отслеживать изменения в документе.
Формат даты описан в стандарте RFC850 (ftp://ftp.nsc.ru/pub/rfc/rfc850.txt).
Для решения ряда задач требуется, чтобы при каждом запросе документ загружался не из кэша браузера, а с сервера. Обычно это необходимо для сайтов, которые поставляют динамически изменяющееся содержание. В качестве примера можно привести результат какого-либо поиска (информация о курсе доллара в реальном режиме, электронный магазин или обычный чат). В таких случаях страница в кэше не обязательно соответствует реальной.
В подобной ситуации можно запретить браузеру кэшировать страницы при помощи свойства метатэга Expires, которое указывает дату устаревания содержимого страницы. Для того чтобы она не кэшировалась, достаточно установить прошедшую дату – например, вот так:
<META HTTP-EQUIV="Expires" CONTENT="Mon, 01 Jan 2000 00:00:00 GMT">
Если страница содержит постоянные данные и не требует регенерации при каждом запросе, то вам не следует отключать кэширование для браузера. Это позволит браузерам использовать сохраненную в кэше копию страницы в течение некоторого отрезка времени, которым вы можете управлять. Кэширование может значительно снизить нагрузку на вашем сервере.
Обычно имеет смысл отключать кэширование лишь для динамических страниц, которые содержат информацию, изменяющуюся со временем. И то далеко не всегда. Какие же из динамических страниц могут быть кандидатами на кэширование? Например, страница с прогнозом погоды, где информация обновляется каждые 5 минут. Или начальная страница сайта, которая содержит список материалов на сервере или официальные сообщения для печати, которые модифицируются два раза в день. Другие подобные страницы, где обновления происходят раз в несколько часов.
Заметьте, что с кэшированием в браузере вы получите меньшее количество посетителей, зарегистрированных на вашем сервере. Поэтому, если вы хотите точно измерять количество просмотров страниц или показов баннеров, то, скорее всего, вы откажетесь от кэширования.
Свойство Pragma
Свойство Pragma (Контроль кэширования) применяется для отказа от кэширования и задается следующим образом:
<META HTTP-EQUIV="Pragma" C0NTENT="no-cache">
Отказ от кэширования означает, что при запросе документа он будет доставлен по сети, а не загружен из кэша. Обратите внимание, что неразумное запрещение кэширования усложняет навигацию по сайту и увеличивает время ожидания. Так, при нажатии в браузере кнопки Back (Назад) происходит новый запрос сервера и приходится ждать загрузки страницы, которая минутой ранее была отправлена клиенту и уже есть у него в компьютере.
Свойство Content-Type
Свойство Content-type (Тип содержимого) служит для указания типов содержимого (типов MIME), к которым относятся «text/html», «image/png», «image/gif», «video/mpeg», «audio/basic», «text/tcl», «text/javascript» и «text/vbscript» (с учетом регистра). Текущий список зарегистрированных типов MIME можно найти по адресу ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/. Тип содержимого «text/css», хотя он и не зарегистрирован, используется для иерархических, или каскадных, таблиц стилей (CSS).
Тип документа "text/html" дополнительно расширяется указанием кодировки страницы charset (набор символов) – тогда браузер выводит ее сразу в заданной кодировке. Однако обратите внимание: если текст документа написан в windows-1251, а значение указано charset=K0I8-r, то изменить кодировку в браузере невозможно и текст совершенно не читается.
Формат метатэга следующий (для типа содержимого "text/html" и набора символов windows-1251):
<META HTTP-EQUIV="Content-type" C0NTENT="text/html; charset= windows-1251">
Немного о кодировках
Кодировка представляет собой таблицу, где каждому символу – буквам алфавита, цифрам и специальным знакам – соответствует свой уникальный номер, код символа.
Полностью стандартизирована лишь первая часть таблицы, так называемый ASCII-код – первые 128 символов, включающих цифры и буквы латинского алфавита. Поэтому с ними никогда не бывает проблем. Вторая же часть таблицы (всего в ней 256 символов – по числу состояний, которые может принять один байт) отведена под специальные символы. Она используется для кодировки символов национальных алфавитов, причем для каждого языка и в каждой стране она различна. При этом для букв русского языка создано пять различных кодировок, то есть одному символу соответствуют разные цифровые коды. Таким образом, при неправильной кодировке мы получим совершенно нечитаемый текст.
На заре развития вычислительной техники очень широко использовалась кодировка с кириллицей KOI-8. Она появилась в семидесятые годы при адаптации операционной системы UNIX к русскому языку – персональных компьютеров тогда еще не было. KOI-8 – до сих пор основная кодировка в UNIX. Потом началось победное шествие персональных компьютеров IBM, а с ними – операционных систем MS DOS, имевших DOS-кодировку (или кодовую страницу 866). Параллельно развивались компьютеры Macintosh, и, разумеется, была придумана еще одна кодировка – MAC. Наконец, с появлением операционной системы Microsoft Windows появилась и новая windows-кодировка (кодовая страница 1251). Она-то и стала самой распространенной в России.
Еще один вариант связан с попытками стандартизации кодировок на уровне всей планеты. Разработчики из ISO, международной организации по стандартам, создали еще одну кодировку и назвали ее ISO-8859-5. В настоящее время она практически не применяется (по-видимому, ее используют лишь в базе данных Oracle), однако поддержка данной кодировки предусмотрена во всех браузерах.
В настоящее время создана универсальная кодировка UNICODE, в которую вошли все языки мира, поэтому на каждый символ в ней отведено по два байта. Таким образом, максимальное число знаков в таблице расширилось до 65 535. Сейчас UNICODE находит свое применение, но пока не слишком широкое.
Правильное отображение символов национальных алфавитов касается как Web-серверов, так и браузеров. Они должны осуществлять информационный обмен на одном языке и в одной кодировке, и только в этом случае сообщения будут доступны.
Сервер должен иметь эффективную систему предварительного оповещения о том, в какой кодировке будет прислана страница. Клиентской программе (браузеру) необходимо принять такое сообщение и, соответственно, настроиться на нужное отображение. Если все сделать правильно, то никаких трудностей не возникнет. Однако при некорректной настройке Web-сервера он сообщает об одной кодировке (например, windows-1251), а страницу пересылает в другой (например, в KOI-8). Пользуясь указаниями сервера, браузер, естественно, ошибается и отображает страницу неверно.