SSI Если вы прогуляетесь по страницам этого сайта, вы увидите, что меняются только тексты страниц и их заголовки - а всё остальное - детали оформления, меню навигации, форма для комментариев и строка поиска - всё это остаётся неизменным. На этом сайте около сотни различных страниц и все они оформлены одинаково. Но посмотрите, что пришлось бы сделать, если бы было нужно, например, изменить вид меню навигации. Если всё пришлось бы делать "по старинке", было бы нужно открыть каждый из сотни файлов, заменить один фрагмент HTML-кода другим и затем закачать изменённые страницы на сайт. Однако на этом сайте "всего лишь" несколько мегабайт текста. А что пришлось бы делать, если размер сайта измерялся бы сотнями мегабайт? У всех, кто когда-либо начинал более или менее серьёзно заниматься созданием вебстраниц, обязательно возникала мысль - а как неплохо бы было, если бы повторяющиеся фрагменты HTML-кода можно было бы писать только по одному разу - чтобы затем они вставлялись бы в нужные места страниц автоматически. Самые продвинутые пытались воспользоваться Java-скриптами, чтобы добиться этого - но тогда страницы начинали растекаться жиром на десятки килобайт, а браузеры посетителей захлёбывались в сложном и обьёмном коде скриптов. Между тем решение проблемы давно уже было - правда клиентам бесплатных хостингов оно не было доступно. На Webservis.ru оно есть и зовут его "SSI" - "Server Side Includes". Перевести это можно, в принципе, как «сборкой страниц занимается вебсервер». Назначение технологии SSI - указать вебсерверу, какой фрагмент взять, и куда его приткнуть, прежде чем выдать его посетителю страницы. Так, ни на одной моей странице нет кода, который отвечает за показывание баннера - а вы его видите, и не один, а даже два. Просто на каждой из моих страниц вверху и внизу есть фрагмент <!--#include virtual="fragments/banner.html"-->. Когда ваш браузер попросил у вебсервера Webservis.ru страницу, на которой вы сейчас находитесь, сервер обнаружил эту метку в тексте страницы. В ней содержится указание взять из подкаталога Fragments файл banner.html и вставить его вместо этой метки. Поэтому если мне вдруг когда нибудь захочется поменять баннер, мне будет достаточно изменить один только файл banner.html - а менять все страницы не понадобится совершенно. Ещё одно возможное применение SSI - с его помощью можно выводить различную информацию о странице. Так, команда <!--#flastmod file="creating-ssi.shtml"--> вставит в текст страницы число, когда эта страница последний раз обновлялась. Точно так же можно выводить название этой страницы и путь к ней, её размер и много чего ещё. Но давайте по порядку.
Итак, как вы могли увидеть, SSI-команды
вставляются в текст страниц, как обычные
комментарии, внутри тэга Вот список основных SSI-команд: #include fileВставляет файл из той же самой папки. Так, #include virtualВ отличие от предыдущей команды эта позволяет вставлять файлы из других папок. Так, #fsize fileВыводит размер файла (формат числа указывается командой config sizefmt). Так #flastmod fileВыводит дату последнего обновления файла (формат числа указывается с помощью директивы config datefmt). #exec cmdЗапускает указанную программу и вставляет выведенные ей строки в текст страницы. Например, <!--#exec cmd="date"--> #exec cgiЗапускает указанный скрипт и вставляет результат его работы в страницу. Но лучше пользуйтесь для этого директивой include virtual (exec cgi может иногда не работать). Так, скрипт, который каждый раз выводит новый пример запроса для поиска в правом верхнем углу этой страницы, вызывается у меня командой #config errmsgВы, наверное, нередко встречали фразу "[an error occurred while processing this directive]" на некоторых недоделанных или неправильно работающих сайтах. Эту фразу вебсервер выводит тогда, когда он не может запустить скрипт, если в том содержатся ашипки или очепятки или же этого скрипта просто не существует. Команда config errmsg позволяет заменить эту непонятную фразу на что-нибудь более вменяемое. Советую вставлять первой строкой во все страницы, которые вы создаёте, SSI-команду <!--#config errmsg="[При открытии страницы произошла ошибка. Пожалуйста, сообщите об этом хозяину сайта.]"--> #config timefmtУказывает серверу, в каком формате выдавать дату командой flastmod. По умолчанию это что-то вроде "Sunday, 10-Sep-2000 17:58:59 Московское время (лето)". Вам же может захотеться получить дату в виде день/месяц/год. Для этого с командой config timefmt используется нужное сочетание следующих возможных параметров: #config sizefmtИзменяет формат вывода значения размера файла. <!--#config sizefmt="abbrev"--> заставляет выводить размер файла в килобайтах ( 26k), а <!--#config sizefmt="bytes"--> - в байтах (26,576) Обратите внимание на то, что команды #config sizefmt и #config timefmt влияют на все связанные с ними SSI-команды от того места, откуда они были вызваны и до самого конца страницы. Поэтому каждый вызов команд #flastmod и #fsize снабжайте своей командой #config - так проще и спокойнее. #printenvВыводит список так называемых "переменных окружения" ("environment variables") с их значениями. В их числе переменные: #echo varВыводит знчение определённой переменной. Например, http://<!--#echo var="HTTP_HOST"--><!--#echo var="DOCUMENT_URI"--> выведет адрес этой страницы - http://userguide.webservis.ru/creating-ssi.shtml. #set var valueПрисваивает новое значение переменной. Например, <!--#set var="SERVER_ADMIN" value="новый@адрес.ru"--> #if, #elif, #else и #endifПрименяется для управления выводом страницы по заданному условию. Синтаксис используется такой: Поэкспериментируйте с SSI - и через некоторое время вы увидите, как он облегчает жизнь. Размеры страниц поуменьшатся за счёт того, что вы избавитесь от повторения общих для всех страниц фрагментов, да и затраты времени на изменения в страницах будут поменьше. Единственное, о чём стоит помнить, так это о том, что лучше не использовать SSI-команды при создании страниц в редакторах типа Front Page - они их обычно не понимают и выкидывают, и о том, что одну SSI-команду нельзя вызвать из другой (как нельзя вызвать SSI-команду из скрипта, и (скажу, забегая вперёд) скрипт из скрипта). Работу страниц с SSI-командами невозможно проверить, открыв их в вашем браузере просто с диска компьютера. SSI-команды понимает только вебсервер - поэтому для проверки их работоспособности вам придётся выгрузить их на Webservis.ru или же установить вебсервер для тестирования сайта на свой домашний компьютер.
|