Home
Главная
Forums
Форум
Your Account
Ваш аккаунт
Web-технологии
HTML, XML, DHTML
JavaScript
SQL
PHP
Perl
SSI
ASP
CSS

Графика
Adobe PhotoShop
Adobe PhotoShop - 2
Macromedia Flash

Компьютеры
Hardware
Мобильные технологии
КПК и ноутбуки

Операционные системы
Unix/Linux
Windows 9x
Windows XP

Стоит посмотреть
  • rockwool прайс


  • мастика хамаст






  • SSI (часть 1)

    На сегодняшний день мы с вами в очередной раз можем стать свидетелями очередного довольно значительного "наворота" в развитии технологии отображения веб-страниц на экранах наших мониторов. Вот только подобное дополнение теперь создано не для конкретно самого броузера, а для сервера, где, собственно говоря, и хранятся впоследствии отображаемые файлы htm, html, js и т.д. Хотя, учитывая характер его применения, поистине странно, почему авторы до сих пор не предложили включить свое творение в стандарт html, вероятно, здесь проблемы не столько у программистов, сколько у тех, кто им назначает зарплаты.


    Что это такое SSI?

    Технология эта носит гордое название, как всегда, из трех букв - S.S.I. Насчет "как всегда" не подумайте ничего дурного, ведь в действительности так и есть, что ни возьми все по стандарту: css, cgi, www. Но давайте не будем строить предположения о причинах такого положения вещей, - скорее всего, просто так удобней. К тому же, основная общность всех этих названий состоит в том, что все они являются, по субъективно-объективному мнению многих, "наворотами" над почти полностью исчерпавшей себя и к настоящему моменту уже непригодной технологии HTML. Последнее предложение, отмечу еще раз, является мнением далеко не всех, но многих.

    В действительности, Интернет уже просто устал от невероятного количества подобных наворотов, которые появляются, считай, каждый месяц, и, как правило, либо упрощают сложные, но ставшие обычными вещи, либо просто имитируют действия друг друга с оглядкой на приорететы фирмы, их создавшей. Касается это, в основном, конкуренции между броузерами и, соответственно, интерпретаторами различных кодов, написанными под них. Если, к примеру, взять спецификацию HTML 4, так просто удивляешься, как далеко тот же Microsoft Internet Explorer от нее, так сказать, продвинулся вперед. Те же легендарные ActiveX и Vbscript для своего описания требуют уже не просто отдельных книг, а целых библиотек сугубо научной литературы.

    А вот представим себе, что фирма Microsoft прекратила выпуск своих броузеров (конечно, вероятность такого поворота событий, мягко говоря, невелика, но все же никто не застрахован от неожиданных приятных случайностей). И куда же, в таком случае девать всю эту огромную кипу никому не нужной бумаги?... Правильно... Но все же обидно, что такие замечательные вещи, разрабатываемые столь же замечательными людьми на протяжении не одного месяца, а может даже и года, уйдут в глубины истории из-за того, что несколько фирм не смогли друг с другом договориться об общепринятых стандартах.

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


    Как это выглядит SSI?

    SSI расшифровывается как Server-Side Includes, что примерно переводится как "Включения на стороне сервера". Изначально разрабатывались они как дополнения к CGI-скриптам (программам, управляющим отображением документа с сервера, не загружаясь при этом к промотрщику на винчестер), однако в дальнейшем были преобразованы в очередную новую технологию, расширяющую возможности html. На самом деле, появления чего-то подобного ожидали уже довольно давно, однако предполагалось, что это нечто будет включено непосредственно в html и, соответственно, будет выглядеть наподобие таблиц стилей CSS либо станет дополнением к Javascript, но почти никто не думал, что все это будет являться совершенно отдельным образованием. Почему сделали именно так, как сделали, лично для меня загадка.

    Новая технология практически никак не интегрируется ни с чем старым, при этом, конечно, давая какие-то ранее неизвестные возможности, но, опять же, в определенных рамках, практически не дающих никакого простора для творчества. По сути дела, SSI - это не что иное как некоторые возможности языка Perl, изложенные таким образом, что применение их здесь требует гораздо меньших затрат от программиста на разработку и написание кода.

    Достаточно искушенный пользователь найдет множество аналогий SSI с другими элементами из темы компьютерного искусства. Одним может показаться, что это очередной вариант каких-то новых особых тэгов html, сама особенность которых заключается в том, что они не передаются на сторону клиента, а исполняются непосредственно на сервере. Другие найдут аналогии с неким командным языком, наподобие того, что интерпретируется command.com'ом в dos и windows, но предназначенного исключительно для контроля передачи информации через глобальную сеть. Третьим покажется, что включения SSI можно сравнить с директивами компилятору в каком-нибудь Pascal или C. На самом деле и тот, и другой, и третий варианты будут верны по-своему.

    По стилю написания SSI черезвычайно похож на макроязык, применяемый в C++. Здесь тоже есть свои директивы, свои переменные включения и т. д. Непосредственно элементы SSI - это команды, заставляющие серевер дописывать какие-то элементы в код, включаются в HTML-документ, хотя и работают только на сервере. Синтаксис подобных команд имеет следующий вид:

    Очень часто значения атрибутов помещается в двойные кавычки, хотя это и не обязательно. Некоторые команды позволяют иметь только одну пару "атрибут-значение". Важно так же обратить внимание на то, что заключительная часть комментария (-->) должна всегда отделяться от директивы пробелом, иначе она будет воспринята как ее часть. Перед тем как загрузить содержимое документа куда-либо в броузер, сервер просматривает его содержимое, игнорируя обычные тэги и скрипты, при этом интерпретируя только SSI -директивы и выполняя действия ими предписываемые. При этом на сторону клиента грузится не сама директива, а тот html или Script-коды, которые эта директива требует автоматически при загрузке включить документ.

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


    Где это можно посмотреть SSI?

    Как уже отмечалось ранее, директивы SSI невозможно просмотреть в стандартном броузере, они выглядят как HTML-коментарии и интерпретируются соответственно. Что бы заниматься подобными вещами у себя на компьютере, вам следует установить себе виртуальный сервер. Как можно догадаться из названия - это программа, которая имитирует сервер на простом домашнем компьютере. Выражается это, на самом деле, не только в том, что вы сможете потренироваться в написании документов с SSI-командами.

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

    Самым популярным виртуальным сервером на сегодняшний день является сервер Apache. Он достаточно свободно распространяется на многочисленных прилавках, торгующих дисками с программным обеспечением, - как вы понимаете, обязательно лицензионным. Лично я себе такую лицензионную версию купил за 60 рублей, уже не помню, где. Однако дело не в этом. В стандартном дистрибутиве Apache имеется модуль mod_include, который непосредственно занимается SSI. Начиная с версии 1.2 он имеет расширенное количество директив и называется - XSSI (eXtended SSI). По умолчанию, он включен в компиляцию.


    Установка и начало работы SSI

    Установка производится автоматически, соответственно, никаких особых знаний для своего проведения не требует, однако, для того чтобы начать работу с SSI после установки, нужно включить механизм Server-Side Includes. Для этого нужно установить обработчик "server-parsed" для нужной страницы. Любой документ, у которого он установлен, будет сканироваться уже упоминавшимся модулем mod_include, если включена опция "Includes" в свойствах самой программы.

    Если вы предполагаете иметь на своем компьютере достаточно малое количество документов с SSI, то лучше всего в файле httpd.conf указать следующие две строки:

    AddType text/html .shtml

    AddHandler server-parsed .shtml

    И далее устанавливать у таких файлов расширение .shtml. Если же все или почти все документы будут иметь директивы SSI, то лучше в том же файле конфигурации указать:

    AddHandler server-parsed .html

    После выполнения описанных действий в дальнейшем любой файл с расширением SHTML будет автоматически распознаваться как имеющий SSI-директивы и интрпретироваться, соответственно, перед отображением в броузере.

    Виртуальный сервер - вещь интересная, полезная, а в некоторых случаях необходимая, однако ввиду того, что статья посвящена другому, а также справедливости ради, могу сказать, что для просмотра файлов с ограниченным количеством SSI-директив его устанавливать вовсе не обязательно. Подобное расширение HTML-технологий поддерживается в генераторе Macromedia Dreamweaver 3, однако поддерживается довольно убого, работая почти в половину возможностей. К тому же, чтобы просмотреть такой документ, нужно помимо того что устанавливать ему расширение .shtml либо .shtm, как и в случае с сервером Apache, изначально открывать его в самом DreamWeaver, после чего, пользуясь командой "Файл -> Предварительный просмотр" наслаждаться видом своего творения непосредственно в броузере. Подобный подход можно назвать удобным с большой натяжкой, поэтому во избежание лишних трудностей следует все же установить на персональный компьютер виртуальный сервер.


    Базовые директивы SSI

    Как уже отмечалось, директивы SSI включаются в HTML-документ в виде комментариев (это не мешает вам использовать обычные комментарии). Каждая такая директива заставляет интерпретатор Apache выполнять определенное действие, будь то включение в документ стороннего html-кода, либо установка параметров самого документа. Также существуют команды альтернативного выбора, которые заставляют выполнять последующий после них ряд действий в случае, если какое-либо условие окажется истинным. Рассмотрим по-порядку определенные в Apache элементы SSI, отвечающие за определенную совокупность действий.


    Свойства документа SSI

    Для переопределения некоторых свойств отображаемого документа в Apache существует параметр config, который контролирует различные аспекты сканирования. Его атрибутами могут быть:

    errmsg - устанавливает сообщение, выводящееся при возникновении ошибки; в большинстве случаев целесообразно установить в пустую строку;

    sizefmt - устанавливает формат, в котором будет выводиться размер файла. Формат соответствует передаваемому библиотечной функции strftime;

    timefmt - устанавливает формат, в котором будет выводиться дата.

    К примеру, если мы хотим, чтобы в случае ошибки загрузки или сканинга нашего документа выводилось нами определенное сообщение, то нужно в shtml-документ добавить следующую строку

    В этом случае на экране пользователя вместо скучного и опостылевшего сообщения типа "Не удается отобразить что-то там, что должно грузиться. Проверьте правильность адреса, и все такое" высветится описанное ранее приветствие, которое, несомненно, вызовет с его стороны необыкновенную симпатию к вашему ресурсу и заставит его вновь и вновь пытаться произвести загрузку.

    На самом деле, эта директива используется крайне редко, а чаще всего не используется вообще, так как не дает в руки разработчику в ообщем-то никаких реальных преимуществ. Соответственно, не каждый сервер содержит ее в своем наборе SSI-команд и поэтому нет никакой уверенности, что она будет работать именно на вашем хостинге. Что касается домашних компьютеров, помимо Apache, существует еще великое множество подобных ему виртуальных серверов. И эта команда поддерживается далеко не во всех. Поэтому в большинстве случаев рекомендуется вообще не использовать директиву config.


    Свойства файла

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

    flastmod - выводит дату последней модификации файла в определенном с помощью timefmt формате. Атрибуты аналогичны атрибутам fsize.

    fsize - выводит размер файла в определенном с помощью sizefmt формате. Допустимые атрибуты:

    file - определяет путь к файлу относительно сканируемого документа; на самом деле, этот атрибут используется очень редко, так как путь к файлу нужно указывать в формате, определенном на платформе операционной системы Linux, а это связано с возможностью возникновения ряда ошибок при разработке документа пользователями, имеющими дело только с windows - например, такой путь не может содержать ../ и не может быть абсолютным путем. Во избежание всего только что описанного следует использовать параметр virtual, путь к которому можно указывать всеми известными разумными способами.

    virtual - определяет стандартный кодированный URL относительно сканируемого документа, или при наличии в начале слэша (/), - относительно корня документов узла.


    Динамические включения в документ

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

    include - включает текст другого документа или файла в сканируемый файл. К включаемому файлу применяются все установленные правила ограничения доступа. Если для каталога, из которого включается файл, установлена опция IncludesNOEXEC, и включение данного документа привело бы к запуску программы, то документ не включается, и выводится сообщение об ошибке. CGI сценарии вызываются, как обычно, с помощью URL, который может содержать кодированную строку запроса (query string). Положение файла указывается с помощью атрибутов:

    file - указывает путь относительно сканируемого документа; как уже отмечалось, такой путь не может содержать ../ и не может быть абсолютным путем; поэтому всегда предпочтительнее использовать атрибут virtual;

    virtual - содержит кодированный URL, относительный или абсолютный; URL не может содержать имя протокола или имя хоста и может содержать строку запроса. продолжение >>>



    Дополнительно на данную тему:

    SSI в примерах
    SSI (часть 2)
    Учебник по SSI (Server Side Includes)
    Мощь SSI
    SSI: вкусно и полезно
    CGI+SSI - пример счетчика

    Назад | Начало | Наверх
    Rambler's Top100