SSI - Server-Side Includes - включения на стороне сервера - Практическое использование SSI

ОГЛАВЛЕНИЕ

Практическое использование SSI

Первым распространенным применением SSI является внедрение в документ некоего динамического куска разметки. Хрестоматийными примерами могут служить счетчики посещений, цитаты или баннеры рекламных сетей. В любом случае, будь то строка текста или целая таблица, вставка производится с помощью директивы include, помещаемой в то место, куда должен быть вставлен кусок разметки: 

<html>

<body>

<p>Документ с баннером внизу страницы</p>

<!--#include virtual="/cgi-bin/ibanner.pl?webclub" -->

</body>

</html>

Программа или сценарий CGI, вставляемая с помощью SSI, ничем не отличается от стандартной CGI программы, за исключением того, что должен выдаваться не целый документ, а только кусок разметки.

Вот текст упомянутого выше сценария:

#!/usr/local/bin/perl

$login=$ENV{"QUERY_STRING"};

print "Content-type: text/html\n\n";

($IP)=($ENV{"REMOTE_ADDR"}=~s/\.//g);

srand($$+$IP+time);

$seed=int rand(10000000);

print "<a xhref=\"http://www.reklama.ru/cgi-bin/href/$login?$seed\">\n";

print "<img xsrc=\"http://www.reklama.ru/cgi-bin/banner/$login?$seed\" width=468 height=60 border=0>\n";

print "</a>\n";

Как видно из примера даже во включаемых сценариях необходимо выводить HTTP заголовок.

В результате сканирования нашего простейшего документа пользователю будет возвращен примерно (с точностью до случайной величины) следующий документ: 

<html>

<body>

<p>Документ с баннером внизу страницы</p>

<a xhref="http://www.reklama.ru/cgi-bin/href/webclub?348593">

<img xsrc="http://www.reklama.ru/cgi-bin/banner/webclub?348593" width=468 height=60 border=0>

</a>

</body>

</html> 

Вторым распространенным применением SSI является формирование страницы из шаблона. В простейшем случае - это документ в начало и конец которого вставляются шапка и концевик

<html>

<head>

<title>Test Page</title>

</head>

<!--#include virtual="/ssi/header.html" -->

<h1>Тестовая страница</h1>

<p>Некий текст</p>

<!--#include virtual="/ssi/global_menu.html" -->

<!--#include virtual="/ssi/footer.html" -->

</body>

</html>

Вставляемые блоки не обязательно должны быть законченными, например, header.html может заканчиваться тэгом <td>, а global_menu.html или footer.html начинаться с тэга </td>. Таким образом, какими бы навороченными не были шапка и концевик документа, редактируемый документ выглядит чрезвычайно просто, и его легко редактировать.

Только используя SSI вы можете в считанные минуты полностью изменить внешний вид или обновить систему навигации на узле, имеющем сотни или тысячи документов, и так, что это пройдет безболезненно для пользователей узла, т.к. вам только потребуется заменить несколько файлов, а остальное за вас сделает сервер.

В связи со всем вышесказанным рождается одно правило: желательно смысловую часть документа строить так, чтобы она никак не полагалась на содержимое шапок и концевиков. В этом случае вы легко сможете перейти с табличной организации страниц на последовательную или на слоевую.