Олег Антонов Аксакал

Что такое SSI, или Сделай свой сайт проще! (Часть 2)

В первой части статьи мы рассмотрели использование технологии SSI для облегчения сопровождения сайта. Почему для этого не использовать связку PHP+MySQL? Конечно, эти инструменты позволят решить задачу гораздо эффективнее и еще более облегчат сопровождение… Если вы вообще представляете, что означает этот набор букв. В противном случае придется потратить на их изучение не одну неделю, прежде чем вы сможете приступить к созданию своего маленького сайта. SSI гораздо проще и может рассматриваться просто как несколько дополнительных тэгов HTML.

Кроме того, есть причины чисто экономического характера. На коммерческих хостингах поддержка SSI имеется практически всегда, даже в самых дешевых тарифах. Тариф с PHP может стоить в два-три раза дороже. SSI часто есть даже на бесплатных хостингах, что не может не радовать владельцев страничек типа «Я и моя собака», если собак много.

Конечно, когда сайт уже сформирован, придется потратить некоторое время, переписывая страницы под SSI. Но эта работа себя оправдает. Единственный недостаток — вы не сможете просмотреть сайт на своем компьютере. То есть увидеть его можно, но все SSI-вставки будут пропущены. Браузер интерпретирует их как комментарии и просто игнорирует. Для отладки придется ставить локальный web-сервер. Но это не такое уж большое неудобство.

Перейдем к другим возможностям SSI, которые принципиально недоступны «чистому» HTML. Скорее всего, вы видели на некоторых сайтах надпись «Последний раз страница обновлялась…». Если это не уловка, реализованная через JavaScript и привязанная к дате компьютера пользователя, то реализовать ее в HTML невозможно. В SSI это решается просто, нужно только указать имя файла:

Последнее обновление: <!--#flastmod file="index.shtml"-->

В окне браузера мы увидим что-то вроде:

Последнее обновление: Sunday, 30-Mar-2008 18:05:04 Московское время (зима)

Формат представления даты можно поменять, для этого есть директива:

<!--#config timefmt="format"-->

Наиболее употребительные значения формата такие: «%D» — дата в формате 03/30/08, «%r» — время в формате 18:05:04 PM.

С помощью SSI можно получать доступ к некоторым специальным значениям, которые называются переменными окружения. Там довольно много любопытного. Например, переменная HTTP_USER_AGENT содержит идентификатор используемого браузера и операционной системы, а REMOTE_ADDR — IP-адрес посетителя сайта. Получить список всех переменных окружения можно SSI-директивой:

<!--#printenv -->

Самым приятным является то, что SSI-директивы включают в себя конструкцию if/else. Полный ее синтаксис такой:

<!--#if expr="УСЛОВИЕ1″ -->
HTML-код, который будет выводиться, если УСЛОВИЕ1 истинно
<--#elif expr="УСЛОВИЕ2″ -->
HTML-код, который будет выводиться, если УСЛОВИЕ1 ложно, а УСЛОВИЕ2 истинно
<--#else -->
HTML-код, который будет выводиться, если все условия ложны
<--#endif -->

Вот это уже совершенно другие возможности! Мы можем проверять версию браузера пользователя и выдавать ему наиболее подходящий html-код. К сожалению, непрофессиональные сайтостроители нечасто обращают внимание на поддержку всех возможных браузеров. Но и им есть что предложить.

Как иногда хочется, чтобы содержимое сайта хоть как-то менялось, создавая видимость профессионального программного движка. Например, менялся бы рекламный блок на странице, выдавая разным посетителям разную информацию. Вот в этом нам и поможет SSI-директива if/else. Для этого нужно только подобрать подходящее условие. Наиболее просто привязаться к часам сервера — ведь время постоянно меняется. Добраться до часов сервера напрямую не получится, поэтому используем переменную окружения DATE_GMT. В списке форматов времени используем «%S» — только секунды. Теперь в нашем распоряжении есть все необходимое. Вставляем SSI-код:

<!--#config timefmt="%S"-->
<!--#if expr = «($DATE_GMT<20)» -->
Рекламный блок 1
<!--#elif expr = «($DATE_GMT<40)» -->
Рекламный блок 2
<!--#else -->
Рекламный блок 3
<!--#endif -->

У нас получился рекламный блок, который меняется три раза в минуту. Посетители на сайт заходят бессистемно, поэтому можно считать, что каждый получает случайную рекламу. Количество условий можно увеличить, хоть по одному на каждую секунду. А можно использовать формат «%M» и менять рекламу несколько раз в час.

Полный список всех SSI-команд, форматов, примеров использования легко найти в Интернете. Поверьте, освоить SSI очень просто и дело того стоит!

Обновлено 21.05.2008
Статья размещена на сайте 30.03.2008

Комментарии (3):

Чтобы оставить комментарий зарегистрируйтесь или войдите на сайт

Войти через социальные сети:

  • Сегодня попробовал на практике применить SSI. Просто вынес в отдельные HTML файлы блоки из кода страниц моего существующего сайта, а вместо них теперь вставил в код страницы < !--#include virtual="/xxxx.html" -->(здесь xxxx - название документа. После открывающей угловой скобки здесь поставил пробел, иначе фраза не отображается ). Все работает!!! Как все просто!
    Олег, спасибо. Изучу обязательно все возможности этой технологии.

    Оценка статьи: 5

  • Олег!
    Обе статьи теперь у меня в архиве полезной информации.
    Обязательно применю на практике.
    Пять

    Оценка статьи: 5

  • Спасибо за такое доступное изложение сути SSI. До настоящего времени не пользовался им, почему-то предполагал, что это довольно трудная технология. Оказывается, все наоборот. Обязательно попробую.

    Оценка статьи: 5