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 вы можете в считанные минуты полностью изменить внешний вид или обновить систему навигации на узле, имеющем сотни или тысячи документов, и так, что это пройдет безболезненно для пользователей узла, т.к. вам только потребуется заменить несколько файлов, а остальное за вас сделает сервер.
В связи со всем вышесказанным рождается одно правило: желательно смысловую часть документа строить так, чтобы она никак не полагалась на содержимое шапок и концевиков. В этом случае вы легко сможете перейти с табличной организации страниц на последовательную или на слоевую.