Читать книгу Как раскрутить и разрекламировать Web-сайт в сети Интернет - Александр Петрович Загуменов - Страница 8
Глава 1
Этапы большого пути
Метаданные
Метатэги – эквиваленты 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). Пользуясь указаниями сервера, браузер, естественно, ошибается и отображает страницу неверно.
Как показано выше, можно задать кодировку документа не на сервере, а непосредственно в HTML-коде – с помощью метатэга со свойством Content-type. Но не все так просто. В России распространен способ, при котором сервер автоматически определяет, в какой кодировке приходит запрос от клиента, и пересылает страницу Web-браузеру уже перекодированной. Вот тут-то использование указанного метатэга и может сыграть с вами злую шутку. Дело в том, что указания на странице имеют приоритет над командами, присылаемыми Web-сервером, и, правильно перекодировав страницу, сервер не может изменить содержимое метатэга. Происходит несовпадение реальной кодировки, в которой пришел документ, и указаний в тэге META. Такую страницу нельзя будет нормально просмотреть и перекодировать средствами браузера. Выбор кодировки вручную в данном случае не поможет, так как метатэг имеет приоритет и над установками браузера. Единственный способ прочитать документ – это сохранить страницу и удалить злосчастный тэг.
Учитывая все вышесказанное, данный тэг можно вообще не применять. Тогда просмотр будет вестись в той кодировке, на которую настроен браузер, если сервер не пришлет уведомление о другой кодировке документа. В этом случае клиент сможет легко ее переключить. У подавляющего большинства ваших посетителей из России по умолчанию выставлена кодировка windows-1251, поэтому у них страница сразу же будет показана правильно.
Свойство Content-language
Язык документа, указанный в метатэге со свойством Content-language (Язык содержимого), может использоваться поисковыми машинами при индексировании страниц.
Метатэг имеет следующий формат:
<META HTTP-EQUIV="Content-language" C0NTENT="en-GB">
Язык задается комбинацией двух значений язык-диалект (при этом значение диалект может отсутствовать), в данном примере – английский-Великобритания. Язык представляет собой двухбуквенный код, зарезервированный для сокращений типа fr – французский, de – немецкий, ru – русский.
Спецификация HTML 4.0 допускает явное указание автором языка в самом документе:
<HTML LANG="en">
Подобная информация может пригодиться:
• поисковым машинам;
• синтезаторам речи;
• агентам пользователей (клиентским программам) при выборе вариантов глифов для типографской печати высокого качества;
• агенту пользователя при выборе набора кавычек;
• агенту пользователя при настройке переноса, лигатур и интервалов;
• программам проверки грамматики и орфографии.
Все коды языков, которые должны использоваться в документах на языке HTML, определены и описаны в стандарте RFC1766 (ftp://ftp.nsc.ru/pub/rfc/rfc1766.txt).
Реализовывать рассмотренную возможность следует крайне осторожно, поскольку могут возникнуть проблемы, из-за которых текст на странице станет нечитаемым.
Свойство Refresh
Свойством Refresh (Период обновления) определяется время задержки, после которой браузер автоматически обновляет документ. Метатэг часто используется для автоматической загрузки другого документа (или, как говорят, переадресации, перенаправления).
Формат метатэга таков:
<META HTTP-EQUIV="Refresh" C0NTENT="3, URL=http://www.name.ru/page.html">
C0NTENT – число, указывающее время задержки в секундах; далее следует адрес, который нужно загрузить по прошествии этого времени. Подобный способ широко используется для создания кратковременных заставок. Но, поскольку некоторые браузеры его не поддерживают, в заставке, чтобы она не «зависала», необходимо предусмотреть возможность перехода на следующую страницу. Кроме того, применение данного способа затрудняет возврат на предыдущие страницы стандартными средствами. При переадресации (то есть при значении 0) пользователь не может вернуться на предыдущую страницу с помощью кнопки Назад (Back), так как его в ту же секунду пересылают на страницу, с которой он пытается уйти.
Как известно, изменение адреса сайта влечет за собой потерю его посетителей. Поэтому обычно по старому адресу размещают информацию, которая поможет найти сайт. Но можно сделать и так, чтобы в дополнение к этому браузер сам перешел на использование нового адреса – благодаря метатэгу со свойством Refresh.
Свойство Window-target
Свойство Window-target (Окно текущей страницы) служит для определения окна текущей страницы. Его можно использовать, чтобы исключить появление новых окон во время применения фреймовых структур.
Вид метатэга может быть, например, таким:
<META HTTP-EQUIV="Window-target" C0NTENT="_top">
Свойство Content-Script-Type
Поскольку в документах HTML не предполагается использовать определенный язык сценариев, авторы должны указывать его непосредственно в каждом фрагменте кода. Это можно сделать с помощью объявления скрипта по умолчанию для всего документа или с помощью локального объявления.
Чтобы объявить скрипт по умолчанию, в текст HTML-документа необходимо включить следующий метатэг:
<META HTTP-EQUIV="Content-Script-Type" C0NTENT="type">
Здесь «type» – тип содержимого, указывающий язык скрипта. Примеры значений – "text/tcl", "text/javascript", "text/vbscript".
Свойство Content-Style-Type
Чтобы установить для документа язык таблицы стилей по умолчанию, надо использовать следующую строку:
<META HTTP-EQUIV="Content-Style-Type" C0NTENT="text/css">
Документы, в которых применен тэг STYLE, но не определен язык таблиц стилей по умолчанию, являются некорректными.