|
Search Promotion: Составление |
Технический
минимум.
В этом обзоре я постарался изложить наиболее важные значения тега META. Я надеюсь, что вы знакомы
с синтаксисом языка HTML и знаете, каким образом происходит добавление тегов
в документ. Если вы предпочитаете работать в специализированном редакторе,
запомните несколько простых правил. Первое - мета директивы пишутся в HEAD
части страницы, второе - мета располагается только после тега TITLE и третье - мета теги
не являются парными, то есть их не надо закрывать. Для примера загляните в
HTML код этой или любой другой
страницы нашего сайта.
Теперь переходим непосредственно к главной теме этой статьи, описаниям этих
самых мета тегов. Обратите внимание, что их расположение в статье далеко неслучайно.
Сначала я расскажу о самых важных тегах, а в конце о второстепенных. В принципе
желательно роспологать мету в HTML коде именно так, как
я расположил все ее значения в этом тексте, но вопрос довольно спорен, поэтому
можете легко перешагнуть через это правило.
Description.
<META NAME="discription" CONTENT="Описание
данной страницы">
Ключевой мета-тег. Именно то, что вы укажите в атрибуте CONTENT, увидит конечный
пользователь в индексе поисковой системы. Естественно, что если описание его не
устроит то по ссылке он не перейдет и, следовательно, вы потеряете посетителя.
Небольшой процент к рейтингу страницы можно добавить, дописав после описания
пару-тройку основных ключевых слов.
Keywords.
<META NAME="keywords" CONTENT="ключевые,слова,и
небольшие фразы">
Основной тег. Подавляющее большинство поисковых систем черпают информацию о
вашем сайте именно из него. Старайтесь составлять ключевые слова и фразы на
основе проведенных исследований, которые могут быть самыми разнообразными. От
пред-индексационных проверок, до взятия ключевых слов из бесплатно
распространяемых списков, найти которые не составляет большого труда. Главное
не переусердствуйте с повторениями, иначе ваш сайт может подпасть под категорию
спама. Составляя ключевые слова, держите верхнюю планку в 800 - 1000 символов.
Abstract.
<META NAME="abstract" CONTENT="Описание вашей страницы">
Существует огромное количество мнений по поводу использования этого тега. Я
предлагаю вам скопировать в него содержимое из тега META description, немного его подправив. Например, в мета
директивах этой страницы в теге description, слово meta написано по-английски, а в теге abstract - по-русски.
Robots.
<META NAME="robots" CONTENT="указания по
индексации">
Достаточно важный тег, указывающий поисковому роботу, что делать с этой
страницей и со страницами, на которые она ведет. Значение атрибута CONTENT может принимать
следующие значения.
index -
проиндексировать данную страницу.
follow -
проиндексировать страницы на которые ссылается данная.
all - два
верхних пункта одновременно.
noindex - не
индексировать данную страницу.
nofollow - не
переходить по ссылкам с этой страницы.
Также возможно указание двух параметров разделенных запятой, например: index,follow.
Subject.
<META NAME="subject" CONTENT="тема страницы">
В этом теге вы задаете тип представленных на странице данных. Исходя из этого
описания поисковый робот "кладет" вашу страницу в тот или иной
раздел. К сожалению, на момент написания этой статьи у каждого поискового сайта
существует собственная таблица классификации страниц, но выход из положения
можно найти, создав, например определенное количество bridge-pages.
Page-type.
<META NAME="page-type" CONTENT="тема
страницы">
Предназначение этого тега полностью идентично предыдущему (Subject), поэтому я
предлагаю вам заполнить его теми же терминами.
Title и Page-topic.
<META NAME="title" CONTENT="заголовок страницы">
<META NAME="page-topic" CONTENT="заголовок
страницы">
Два этих тега полностью идентичны друг другу, поэтому я и описываю их вместе.
Общей рекомендацией можно назвать копирование текста из тега TITLE (не META title, а именно TITLE) и помещение его в
атрибут CONTENT. Для небольшого поднятия рейтинга можно поэкспериментировать, например,
написать исходный текст в верхнем и нижнем регистрах.
Revisit.
<META NAME="revisit" CONTENT="количество дней">
Если вы работаете над часто обновляемым сайтом, никогда не теряйте этот тег!
Именно он указывает поисковому роботу, когда ему нужно вернуться и
переиндексировать данный документ. В атрибуте CONTENT вы указываете количество дней (X days, где X число от 1 и до...).
Существует альтернативный данному тег - revisit-after. Означает он то же самое, только используется
гораздо реже. Вот в принципе и все с основными мета тегами, описывающими
содержание страницы, хотя существует еще дюжина атрибутов для META, разбор которых
выходит за рамки этой статьи.
Настройка формы HTML – кода.
Большое значение имеет заголовок вашего сайта и его описание. Заголовок помещается между
тегами <TITLE>...</TITLE>, и должен состоять не менее чем из пяти (!) слов. Именно он
высвечивается в результатах запросов на первом месте и, следовательно, имеет
первостепенное значение в деле “поимки” посетителей.
Поисковые системы при регистрации Web-сервера, сайта или страницы широко используют
информацию, хранящуюся в тегах <МЕТА>. Эти теги не видны при просмотре
документа и заметно увеличивают его размер, однако без них не обойтись. Правильно составленые МЕТА теги дают возможность при помощи поисковых систем отыскать Ваш сайт
среди огромного числа других. Для этого необходимо следовать следующим
рекомендациям:
1. Длина содержимого тегов МЕТА "description"
(описание) не должна превышать 200 символов, а "keywords"
(ключевые слова) - 1000 символов.
Это связано с тем, что поисковые серверы чаще используют именно такие величины
при индексировании информации о вашем сайте. Можно получить отрицательный
результат, если поисковые машины отбросят часть описания, превышающего
установленные нормы, в результате чего в каталог попадет не вся желаемая
информация, либо сервер просто отвергнет регистрацию вашего сайта.
В тег “description” нужно включить наиболее часто используемые на
вашем сайте термины и их синонимы. Описание должно состоять из нескольких
осмысленных фраз и быть в состоянии быстро ввести посетителя в курс дела.
Можете включить и термины, не имеющие отношения к вашим страницам, однако в Internet такое поведение
считается некорректным.
Основным и самым важным критерием при поиске в базе поисковых машин являются ключевые слова, то есть те слова,
которые наиболее характерны для описываемого вами предмета. Поэтому, перед тем
как подавать запрос на включение вашего сайта в базу данных поискового робота,
внимательно прочтите ваш текст. Выделите группу ключевых слов для вашего текста,
и запишите их в виде МЕТА - тега "keywords". Используйте в списке ключевых слов как можно
больше синонимов. В этот список можно вставлять и фразы. В этом случае при совпадения фразы с той, что вводит
пользователь, у вашего сайта повышается шанс попасть в самое начало списка,
выданного поисковым сервером.
2. Для увеличения рейтинга сайта и
попадания его в верхнюю часть поискового списка, можно каждый термин,
включаемый в список ключевых слов, повторить около 3 раз.
Не рекомендуется использовать в описаниях и в списке терминов понятия и слова,
слабо связанные друг с другом.
3. Используйте строки комментариев с ключевыми словами для улучшения
результатов поиска Ваших страниц.
Поисковые машины, как правило, работают с тегами МЕТА, а в случае их отсутствия
- уже с содержимым страницы. Иногда это приводит к появлению сайта в верхней
части списка “Top10”. Но может привести и к отрицательному результату (перед регистрацией
проверьте поисковую машину, дав запрос и просмотрев ключевые слова у сайтов,
стоящих на верхних позициях).
Если слова, указанные в качестве ключевых, еще и добавить в виде комментариев в текст HTML кода страниц, то результат поиска может стать
более выгодным для Вас. Выберите несколько мест в коде страниц для размещения
таких комментариев. Например, строчку вида
<!-- ваши ключевые слова, ваши ключевые слова ... -->
можно разместить после тега <HEAD>, перед тегами </HEAD> и </BODY>.
4. При наличии большого количества
страниц создавайте теги МЕТА-информации с различным содержанием, описывающем
содержание данной конкретной страницы или раздела.Описания МЕТА-тегов1) Для того, чтобы при просмотре
документа броузер брал свежую версию документа, а не версию из кеша
используется:
<META HTTP-EQUIV="Expires" Content="Mon, 28 Mar 1999 00:00:01 GMT">,
или <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
2) Для определения броузером языка
(набора символов), на котором написана страница используется:
<META HTTP-EQUIV="Content-Type" Content="text/html; Charset=Windows-1251">
- здесь устанавливается набор "кириллических" символов кодовой
таблицы Windows.
3) Этот тег заставит броузер
перезагрузить текущую страницу с указанного адреса через 1 секунду:
<META HTTP-EQUIV="Refresh" Content="1; url=http://адрес_вашей_страницы">
4) Для указания имени автора и дополнительной
информации о нем используется
<META Name="autor" Content="Ваши Ф.И.О.,
E-Mail...">
5) Для указания авторких прав
используется
<META Name="copyright" Content="Ваша_фирма...">
6) Для указания ключевых слов и
терминов используется
<META Name="keywords" Content="Ваши_Ключевые
слова">
7) Для указания краткого описания
используется
<META Name="description" Content="Описание_Вашей_Страницы">
Web-мастера -
профессионалы старой закваски, так называемые Iron Man HTML, до сих пор предпочитающие работать в простейших
текстовых редакторах, без затей, и делать все "руками", зачастую не
только презирают лишние с их точки зрения команды, но и намеренно стараются
избегать их писЗть. Как правило, они просто не слишком много внимания уделяют
метатегам именно потому, что больше заняты наполнением своих страниц конкретным
содержимым, чем изощренным описанием заголовков этих самых страниц (чем по сути
метакоманды и являются).
Единственный, с их точки зрения, метатег,
действительно заслуживающий внимания, - это "Refresh":
<META HTTP-EQUIV="Refresh" CONTENT="N; URL=ресурс">
Этот тег через заданное количество секунд
N позволяет
выполнять ресурс (обновлять страницу), что дает возможность web-мастеру проявить свою
фантазию в полной мере: можно имитировать слайд-презентацию, можно использовать
его для прокрутки новостных баннеров на главной странице (http://www.freelines.ru/), можно пошутить (www.freelines.ru/after-21/hot_w.htm), можно даже
использовать его в коммерческих целях - именно на основе использования этого
тега в 1995 году была разработана одна из первых в России систем
он-лайн-трансляции биржевых торгов (http://www.futures.ru/ - причем тогда обошлись без всякой "Явы"!). Вот простейший
полезный пример автоматического преренаправления броузера клиента с
несуществующей страницы на другую (полный URL этого
файла - старый ресурс):
<html><head><title>auto-redirect</title>
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=новый
ресурс">
</head><body></body></html>
С другой стороны, web-мастера-новички, с
самого начала работающие в каком-нибудь сверхумном редакторе (типа FrontPage, который, как
астролябия, сам все делает и генерит любые метатеги автоматически), как
правило, никогда и не смотрят на получившийся в результате HTML-код, что может
привести, как выражаются в СМИ и правительственных структурах, "к
непредсказуемым последствиям". Например, теоретически полезный для
установки кодировки языка броузера метатег
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=KOI8-R"> ,
стоящий в заголовке страницы, которая
написана в Windows-кодировке, приведет к тому, что эту страницу пользователи просто никогда
не смогут прочитать, и никакое переключение кодировок в броузере им не поможет.
Тег этот ставится многими wYsIwig-редакторами по умолчанию, поэтому бездумное
пользование этими программами без дальнейшей тщательной ручной проверки и
чистки HTML-кода
считается просто опасным признаком полнейшего непрофессионализма.
На самом деле, изначально основное
назначение метатегов - дать возможность web-мастеру сделать подробное и тщательно продуманное
позиционирование размещаемой в Интернете информации. В принципе, с точки зрения
пользователя, поиск нужной информации в Сети более всего напоминает поиск
нужной иголки в стоге иголок, и метакоманды, используемые для описания и
индексирования документа поисковыми машинами, позволяют решение этой задачи ему
облегчить.
Рассмотрим подробный пример оформления HTML-страницы,
позволяющего сильно поднять ее поисковый рейтинг исключительно за счет
использования технических возможностей языка - правильного использования
метатегов. И хотя алгоритмы оценки страницы в различных поисковых системах
значительно различаются (к тому же они постоянно модернизируются
администраторами поисковых серверов), все же можно вывести некоторые общие
полезные правила оформления, например: использование метатега "Refresh", может резко
снизить рейтинг страницы, так же как и использование JavaScript/VBScript, перезагружающих команд или текста, совпадающего
по цвету с фоном, вплоть до отказа от индексации этой страницы.
<!--
Пример страницы; Здесь лучше написать главное ключевое выражение и URL страницы:
Tour-to-Tsarskoye-Selo.html
-->
<html>
<head>
<title>All about Tsarskoye Selo on www.pushkin-town.net, Tour to Tsarskoye Selo, и далее другие ключевые выражения</title>
Этот тег должен обязательно
предшествовать любым мeтaтегам, иначе многие поисковые системы не заметят
его. В заглавие должны обязательно вписываться основные ключевые выражения, и
если их много - разделенные запятыми.
<META NAME="description" CONTENT="You can find all information about Pushkin-town Tsarskoye Selo on this site, Tour to Tsarskoye Selo, и далее другие ключевые выражения">
Этот тег задает ту фразу, по которой
пользователь определяет на поисковом сервере суть вашей страницы и решает,
посещать ли ее. Записанные далее ключевые выражения обычно не помещаются в
выводимое поле и не видны пользователю, но играют важную роль в рейтинге
страницы.
<META NAME="abstract" CONTENT=" You can find all information about Pushkin-town Tsarskoye Selo on this site, Tour to Tsarskoye Selo, и далее другие ключевые выражения">
Можете смело скопировать сюда
содержимое из предыдущего метатега "description".
<META NAME ="keywords" CONTENT="Tour to Tsarskoye Selo, и далее другие ключевые выражения">
Основополагающий метатег; к сожалению
ряд поисковых систем (в их числе Altavista) не распознают регистр при индексации, поэтому
желательно написание всех вариантов ключевого выражения, типа Tour to Tsarskoye Selo, TOUR TO TSARSKOYE SELO, tour to tsarskoye selo.
<META NAME="distribution" CONTENT="Global">
<META NAME="rating" CONTENT="General">
Метатеги, определяющие ареал действия
страницы, рекомендуется оставить без изменений.
<META NAME="subject" CONTENT="Travel
- International">
<META NAME="page-type" CONTENT="Travel -
International">
Теги, определяющие тип содержимого
страницы. К сожалению общие рекомендации для заполнения этих тегов дать
невозможно, так как у каждой поисковой системы своя таблица классификации.
<META NAME="page-topic" CONTENT="All about Tsarskoye Selo on www.pushkin-town.net, Tour to Tsarskoye Selo, и далее другие
ключевые выражения">
<META NAME="title" CONTENT="
All about Tsarskoye Selo on www.pushkin-town.net, Tour to Tsarskoye Selo, и далее другие
ключевые выражения">
Два метатега, в которые надо
скопировать содержимое "контейнера" <title>...</title>, но можно и пофантазировать.
Ниже следуют метатеги, характеризующие
страницу:
<META NAME="site-created" CONTENT="09-09-1999">
Время создания.
<META NAME="expires" CONTENT="31, 12, 2005">
Срок закрытия страницы (здесь можно
подумать о бренности всего сущего).
<META NAME="revisit" CONTENT="15 days">
Очень важный тег задания периодичности переиндексации
поисковыми машинами.
<META NAME="revisit-after" CONTENT="15 days">
То же самое (можно ставить 30, 60...
дней).
<META NAME="Content-Language" CONTENT="english">
Учтите, что слово Russian приводит в
замешательство некоторые поисковые системы.
<META NAME="resource-type" CONTENT="document">
Тип ресурса, для простой страницы
лучше не менять.
<META NAME="audience" CONTENT="all">
На кого рассчитана страница (не пишите
здесь Adults, это может ограничить доступ на страницу).
<META NAME="robots" CONTENT="index,all">
Указание роботу, что именно надо
индексировать, а индексировать надо как можно больше!
Ниже следуют метатеги, характеризующие
изготовителя. Учтите только, что владелец, автор и издатель не обязательно одно
и то же лицо или организация.
<META NAME="Author" CONTENT="Oleg
Novikov, Copyright 1999 - master@russianstar.com">
<META NAME="Copyright" CONTENT="Oleg Novikov -
master@russianstar.com">
<META NAME="Reply-to" CONTENT="master@russianstar.com">
<META NAME="Owner" CONTENT=" Web-publishing
office of Pushkin-town CCI" >
<META NAME="Address" CONTENT="Pushkin-town,
St.Petersburg, Russia" >
<META NAME="Publisher_name" CONTENT="
Web-publishing office of Pushkin-town CCI">
<META NAME="Publisher_type" CONTENT="company/small">
<META NAME="Publisher_location" CONTENT="RU">
<META NAME="home_url" CONTENT="http://www.pushkin-town.net/index1.htm">
Важный метатег, позволяющий роботу
знать, что вы считаете своей домашней страницей.
<
Мета-тег хотя и бесполезный, но гордо
говорящий, что все это вы написали в блокноте и посему вы - непревзойденный web-мастер недосягаемой
квалификации.
Наконец, возьмите содержимое метатега
"keywords" и скопируйте его в комментарий - это может добавить небольшой
процент к вашему рейтингу:
<!-- Tour to Tsarskoye Selo, и
далее другие ключевые выражения -- >
</head>
<body>
<H1>Tour to Tsarskoye Selo, и далее другие
ключевые выражения </H1>
Поисковые системы высоко оценивают
использование ключевого выражения в теге заголовка.
Многие поисковые машины индексируют
начало и конец страницы, поэтому надо использовать ключевые выражения в этих
местах, но не более одного повторения ключевого выражения на строке:
<!-- <ul>
<li>
<li>
<li>
</ul> -->
<a
href="http://www.russianstar.com/pushkin/Tour-to-Tsarskoye-Selo.htm">
С этим ключевым выражением значительно
повышается рейтинг страниц, на которые имеется ссылка, поэтому один из
вариантов продвижения - это обмен взаимными ссылками с другими одноплановыми
сайтами, при этом учитывается и совпадение слов в URL страницы с ключевым выражением:
<li><img src="http://www.pushkin-town.net/Tours-to-Tsarskoye-Selo.gif" Alt="Town of Muses"><br><li><img src="http://www.pushkin-town.net/Tours-to-Tsarskoye-Selo.gif" Alt="Tours to Tsarskoye Selo">
Определенный процент рейтинга можно
выбить, используя ключевое выражение в параметре "Alt" а также в названиях картинок.
<!--<ul>
<li>
<li>
</ul> -->
Конец страницы, не забудьте про
ключевые выражения.
</body>
</html>
Все приведенные выше метатеги не являются
обязательными. Кроме того, что их наличие хоть немного, но замедляет загрузку
страницы в броузер пользователя, их вдумчивое написание отнимает немало
рабочего времени у web-мастера. И если уж вы решили сознательно их применить для раскрутки своего
ресурса, просто не забывайте о том, что краткость - сестра таланта и все хорошо
в меру. Такое количество описаний заголовка имеет смысл размещать только на
главных (ключевых) страницах web-сайта, которые необходимо индексировать на
поисковых машинах в первую очередь.
Желаю счастливого продвижения ваших
страниц в TOP-10 на всех поисковиках мира!
Вы, может, знаете, что HTML разрешает вставлять META-тэги в заголовок
документа. Тогда вы, я просто уверен, знаете для чего они нужны. Кто не в курсе
- кратенько поясню: Существуют поисковые сервера, которые ползают по зарегистрировавшимся
в их базе сайтах и индексируют странички. При этом они обращают пристальное
внимание на МЕТА-тэги, а особенно на keywords и description (<ключевые слова> и <описание>).
Синтаксис этих двух МЕТА-тэгов
выглядит так:
<meta name=description content="CGI&Perl
- Документация и скрипты"><meta name=keywords content="perl cgi documentation
scripts скрипты документация перл">
Ключевые слова также могут быть разделены запятой.
Ну а теперь непосредственно о скрипте. Скрипт
осматривает все странички сайта на предмет meta description и meta keywords и составляет итоговую таблицу - индекс, или
предметный указатель.
Строки 1-3: Обычное начало программы.
5-26: Часть скрипта, которую нужно
сконфигурировать под свои нужды.
7: Список URLов, которые необходимо проиндексировать. Но если
все страницы сайта связаны гиперссылками - то необходима лишь один URL.
9-24: Определение процедуры OK_TO_FOLLOW. Принимает URI-объект (http), возвращает единицу,
если эту ссылку надо сканировать и нуль, если не надо.
11-13: Необходимо, чтобы скрипт не выходил за
пределы сайта.
14-16: Не нужно также запускать никакие CGI-скрипты
17-22: Убираем из процесса индексации картинки и
другие не-HTML файлы.
Отметьте небольшую хитрость: цикл for здесь вовсе не цикл,
он нужен лишь для того, чтобы переменная $_ равнялась тому, что внутри скобок for ()
23: Передано то, что необходимо проиндексировать -
вернем единицу.
28-31: Подключаем модули: CGI::Pretty - стандартный, LWP::UserAgent, HTML:Entities, WWW::Robot - входят в библиотеку LWP.
33-35: Определение глобальных переменных. %description - хэш, ключами
которого являются URLы, а значениями - описания (meta description). %keywords - URL- >ключевые слова (keywords). %keywords_caps содержит регистр (верхний или нижний) написания
ключевого слова.
37-45: Настройки индексатора. За подробностями
обратитесь к документации по WWW::Robot. Здесь же устанавливаем, что индексатор
идентифицирует себя как MetaBot, версии 0.15, ну и e-mail адрес. USERAGENT - будет LWP::UserAgent, отключена проверка MIME-типов.
47: Включает проверку конфигурации прокси-сервера,
вобщем-то это и не нужно. 49-54: Одна из двух callback-функций, которую вызывает WWW::Robot. Как только найден URL, вызывается follow-url-test callback. Здесь вызываем
функцию OK_TO_FOLLOW, чтобы отсеять
лишнее.
55-76: Вытаскиваем информацию с каждой странички.
58-61: Нам нужны только keywords и description
63-67: Сохраним описание, предварительно очистив
его от переносов строк и символов табуляции, заменив их на пробелы.
68-75: Запомним ключевые слова и их регистр. В
данном скрипте предполагается, что слова разделены запятыми. Можно
разделителями сделать пробелы, заменив split(/,/,... на split (/ /, ... Или и пробелы и запятые - split (/[, ]/,...
77: Запуск индексации. Для большого сайта займет
довольно длительное время.
В строке 81 содержится оператор print, который
продолжается до конца скрипта и выводит таблицу-индекс.
79: хэш %seen_letter нужен для того чтобы вверху странички выдать
ссылки в виде букв алфавита, например: <Jump to: A B K L P R S W Z>
Для каждого ключевого слова выдается ссылка на
документ, где оно встречается и описание из этого документа (3 колонки в
таблице).
Вот и все.
=1= #!/usr/bin/perl -w=2= use strict;=3= $|++;=4==5= ## config=6==7= my @URL = qw(http://www.stonehenge.Xcom/);=8==9= sub OK_TO_FOLLOW { 1000=10= my $uri = shift; # URI object, known to be http only=11= for ($uri->host) {=12= return 0 unless /\.stonehenge\.Xcom$/i;=13= }=14= for ($uri->query) {=15= return 0 if defined $_ and length;=16= }=17= for ($uri->path) {=18= return 0 if /^\/(cgi|fors|-)/;=19= return 0 if /col\d\d|index/;=20= return 0 if /Pictures/;=21= return 0 unless /(\.html?|\/)$/;=22= }=23= return 1;=24= }=25==26= ## end config=27==28= use WWW::Robot;=29= use LWP::UserAgent;=30= use CGI::Pretty qw(-no_debug :html);=31= use HTML::Entities;=32==33= my %description;=34= my %keywords;=35= my %keyword_caps;=36==37= my $robot = WWW::Robot->new=38= (=39= NAME => 'MetaBot',=40= VERSION => '0.15',=41= EMAIL => 'merlyn@stonehenge.Xcom',=42= USERAGENT => LWP::UserAgent->new,=43= CHECK_MIME_TYPES => 0,=44= ## VERBOSE => 1,=45= );=46==47= $robot->env_proxy;=48==49= $robot->addHook=50= ("follow-url-test" => sub {=51= my ($robot, $hook, $url) = @_;=52= return 0 unless $url->scheme eq 'http';=53= OK_TO_FOLLOW($url);=54= });=55= $robot->addHook=56= ("invoke-on-contents" => sub {=57= my ($robot, $hook, $url, $response, $structure) = @_;=58= my %meta = map {=59= my $header = $response->header("X-Meta -$_");=60= defined $header ? ($_, $header) : ();=61= } qw(Description Keywords);=62= return unless %meta;=63= if (exists $meta{Description}) {=64= $_ = $meta{Description};=65= tr/ \t\n/ /s;=66= $description{$url} = $_;=67= }=68= if (exists $meta{Keywords}) {=69= for (split /,/, $meta{Keywords}) {=70= s/^\s+//;=71= s/\s+$//;=72= $keywords{lc $_}{$url}++;=73= $keyword_caps{lc $_} = $_;=74= }=75= }=76= });=77= $robot->run(@URL);=78==79= my %seen_letter;=80==81= print=82= table({ Cellspacing => 0,
Cellpadding => 10, Border => 2 },=83= do {=84= my %letters;=85= @letters{map /^([a-z])/, keys %keywords} = ();=86= %letters ?=87= Tr(td({Colspan => 3},=88= p("Jump to:",=89= map a({Href => "#index_$_"}, uc $_), sort keys %letters)))=90= : 0;=91= },=92= map {=93= my $key = $_;=94= my @value ==95= map {=96= my $url = $_;=97= my $text = exists $description{$url} ?=98= $description{$url} : "(no description provided)";=99==100= [a({Href => encode_entities($url)}, encode_entities($url)),=101= encode_entities($text),=102= ];=103= } sort keys %{$keywords{$key}};=104= my $key_text = $keyword_caps{$key};=105= if ($key =~ /^([a-z])/ and not $seen_letter{$1}++ ) {=106= $key_text = a({ Name => "index_$1" }, $key_tex639t);=107= }=108==109= map {=110= Tr(($_ > 0 ? () : td({Rowspan => scalar @value}, $key_text)),=111= td($value[$_]));=112= } 0..$#value;=113= } sort keys %keywords=114= );
<meta http-equiv="Content-Type" content="text/html">
<meta http-equiv="author" content="Andrey G. Novikov + Andrew Yourtchenko">
<meta http-equiv="distribution" content="global">
<meta http-equiv="resource-type" content="document">
<meta name="keywords" content="WebClub, <!--#echo var="KEYWORDS" -->">
<meta name="description" content="WebClub. Кладовая. <!--#echo var="DESCRIPTION" -->">
<link rel="stylesheet" type="text/css" href="/webclub2.css">
Иногда для того, чтобы улучшить
эффективность работы web-проектов, возникает потребность в обмене данными
и управлении некоторыми функциями. Для таких целей достаточно часто применяют
внешние программы с использованием языка web-программирования Perl (CGI-скрипты). Однако не всегда и не во всех случаях
это целесообразно (кстати, большинство серверов бесплатного хостинга не
поддерживают CGI). Выйти из сложившейся ситуации можно, обратившись к HTML-коду и Cookie.
По некоторым данным термин Cookie появился в те времена, когда зарождалась
знаменитая UNIX, где для обмена данными применялись так называемые "квитанции"
(token, ticket), и некоторые из них,
имеющие определенные ключевые значения, назывались Magic Cookies. В дальнейшем Cookie служили для решения определенных проблем
спецификации. Основная проблема описанного протокола — непостоянное соединение между клиентом и
сервером, то есть при передаче данных по HTTP посылается отдельный запрос для каждого
документа. Cookie — небольшой информационный блок, который при загрузке сайта передается
клиентскому браузеру, и благодаря компьютеру пользователя частично решает
возникшие затруднения. Данная информация обычно хранится некоторое время (от
одной сессии до нескольких месяцев) и передается серверу с каждым запросом как
часть HTTP-заголовка.
Если материал сохраняется продолжительное время, то обычно в виде файла cookie.txt,
расположенного в рабочей директории той папки, в которой находится
установленный браузер. Эмуляция сессии по HTTP-протоколу с помощью cookie вкратце выглядит так: при первом запросе
документа выдается определенное значение cookie, которое при каждом повторном запросе считывается
из HTTP_COOKIE и соответствующим образом обрабатывается.
Возможности использования
Сами cookie
ничего не делают, так как представляют собой блок текстовой информации. Однако
сервер, считывая полученную из них информацию и анализируя ее, может совершать
те или иные действия. Пример повседневного их использования — авторизация
доступа к различным e-mail и
другим серверам. В этом случае в cookie сохраняется (иногда только в течение сессии, но
иногда и более длительное время) имя пользователя и пароль, что позволяет юзеру
не вводить их при повторном обращении к сервису или документу. Достаточно часто
возможности cookie приспосабливают к оформлению заказов в онлайн-магазинах. В этом случае
сервер "записывает" в cookie информацию о выбранных покупателем товарах и
оформляет покупку сразу нескольких единиц. Благодаря cookie можно персонализировать сообщения и целые web-страницы. Другая
важная особенность сервиса — применение его функций для получения различных
статистических данных, учета их использования, сведений о баннерной активности
и т. п.
Мифология
В недалеком прошлом велось много разговоров о вредоносности cookie. Утверждали, будто
с их помощью без ведома и согласия пользователя на его диск записывается
какая-то информация. Некоторые заявляли, что благодаря функциям cookie даже можно считать
любую информацию с машины. Действительно, можно выяснить, какой браузер вы
используете, и на основе полученной сервером информации направить пользователей
Explorer’а на
одну страницу, а Netscape — на другую. Но в этом и подобных алгоритмах cookie применяет формы
взаимодействия не только и не столько с машиной, сколько с пользователем
посредством машины. То есть фактически, заполняя web-формы, вы параллельно формируете определенные cookie, которые и будут
играть определяющую роль в последующих обращениях к сайту или документу. В
любом случае, все современные версии браузеров контролируют прием и могут
запретить cookie.
Держите браузер
Netscape Navigator одним из первых начал поддерживать cookie, в этом же ряду
надо вспомнить и Internet Explorer. По поводу остальных браузеров что-либо сказать
определенное затрудняюсь, так как "лично" с ними не сталкивался.
Способ применения
В работе с cookie можно использовать Perl/CGI, Java Script, МЕТА-тэги HTML. Мы рассмотрим, как выставить cookie c помощью JS и MЕТА-тэгов.
Тем, у кого имущество ограничивается маленьким сайтом и небольшим количеством web-страниц, проще всего
вставить cookie — включить в раздел <HEAD>…</HEAD> соответствующий тэг:
<META HTTP-EQUIV="Set-Cookie" CONTENT="NAME=value; EXPIRES=date; DOMAIN=domain_name; PATH=path; SECURE">
Минимальное описание поля Set-Cookie HTTP заголовка:
Set-Cookie: NAME=VALUE
Где:
? NAME=VALUE — строка
буквенно-цифровых символов, исключающая использование запятых, двоеточий,
пробелов и переводов строки. NAME — имя cookie, VALUE — значение;
? expires=DATE — время, до котрого
следует хранить cookie, в формате "expires=Monday, DD-Mon-YYYY HH:MM:SS GMT". Если этот атрибут не указан, то cookie сохраняется в
течение одного сеанса до закрытия браузера;
? domain=DOMAIN_NAME — домен, для
которого значение cookie действительно. Например, при указании "domain=beloffcenter.net", значение cookie будет действительно и для домена www.beloffcenter.net, и для beloffcenter.net. Данный атрибут
действителен для доменов com, edu, org, net, gov, mil, int, firm, shop,web,info. Если он опущен, то по умолчанию используется
доменное имя сервера, на котором задали значение cookie;
? path=PATH — данный атрибут
устанавливает подмножество документов, для которых действительно значение cookie. Например, указание
"path=/price" приведет к
тому, что значение cookie окажется действительным для множества документов в директории /price, /prices и файлов в текущем
каталоге с именами типа price.htm и prices.htm. Для того, чтобы cookie отсылались при каждом запросе к серверу, укажите
корневой каталог сервера "path=/". Если этот атрибут не зафиксирован, то
значение cookie распространяется только на документы в той же директории, что и документ,
в котором было установлено значение cookie;
? secure — если стоит данный
маркер, то информация cookie пересылается только через HTTPS (HTTP с использованием SSL — Secure Socket Level) в защищенном
режиме. Если его нет, то информация пересылается обычным способом.
Можно установить несколько cookie одновременно, для этого необходимо повторить
установочный тэг для каждого из них:
<META HTTP-EQUIV="Set-Cookie