Раздел 6. Руководства, учебные пособия и инструкции RU EN Пункт 52. Включения на стороне сервера: введение Серверные включения предоставляют средства для добавления динамического содержимого в существующие HTML-документы. Введение
В этой статье рассматриваются включения на стороне сервера, обычно называемые просто SSI. В этой статье я расскажу о настройке вашего сервера для разрешения SSI и расскажу о некоторых основных методах SSI для добавления динамического содержимого на ваши существующие HTML-страницы. В последней части статьи мы поговорим о некоторых более сложных вещах, которые можно сделать с помощью SSI, таких как условные операторы в ваших директивах SSI. Что такое ССИ?SSI (включения на стороне сервера) — это директивы, которые размещаются на HTML-страницах и оцениваются на сервере во время обслуживания страниц. Они позволяют добавлять динамически сгенерированный контент на существующую HTML-страницу без необходимости обслуживать всю страницу с помощью программы CGI или другой динамической технологии. Например, вы можете поместить директиву в существующую HTML-страницу, например: И, когда страница обслуживается, этот фрагмент будет оцениваться и заменяться его значением: Решение о том, когда использовать SSI, а когда полностью сгенерировать вашу страницу какой-либо программой, обычно зависит от того, какая часть страницы является статической и какую часть необходимо пересчитывать каждый раз, когда страница обслуживается. SSI — отличный способ добавить небольшие фрагменты информации, такие как текущее время, как показано выше. Но если большая часть вашей страницы генерируется во время ее обслуживания, вам нужно искать какое-то другое решение. Настройка сервера для разрешения SSIЧтобы разрешить SSI на вашем сервере, вы должны иметь следующую директиву либо в вашем Опции +Включает Это сообщает Apache, что вы хотите разрешить анализ файлов для директив SSI. Обратите внимание, что большинство конфигураций содержат несколько Не каждый файл анализируется на наличие директив SSI. Вы должны указать Apache, какие файлы следует анализировать. Есть два способа сделать это. Вы можете указать Apache анализировать любой файл с определенным расширением файла, например AddType текст/html .shtml AddOutputFilter ВКЛЮЧАЕТ .shtml Одним из недостатков этого подхода является то, что если вы хотите добавить директивы SSI к существующей странице, вам придется изменить имя этой страницы и все ссылки на эту страницу, чтобы дать ей расширение, чтобы эти Другой метод заключается в использовании XBitHack на Краткий комментарий о том, чего делать нельзя. Время от времени вы будете видеть людей, рекомендующих вам просто указать Apache анализировать все
Конечно, в Windows нет такой вещи, как бит выполнения, который нужно установить, так что это немного ограничивает ваши возможности. В своей конфигурации по умолчанию Apache не отправляет заголовки HTTP с датой последнего изменения или длиной содержимого на страницах SSI, поскольку эти значения сложно вычислить для динамического содержимого. Это может предотвратить кэширование вашего документа и привести к снижению производительности клиента. Есть два способа решить эту проблему:
Основные директивы SSIДирективы SSI имеют следующий синтаксис: Он отформатирован как HTML-комментарий, поэтому, если у вас неправильно включен SSI, браузер проигнорирует его, но он все равно будет виден в исходном HTML-коде. Если у вас правильно настроен SSI, директива будет заменена ее результатами. Функция может быть одной из многих вещей, и мы поговорим о большинстве из них в следующем выпуске этой серии. А пока вот несколько примеров того, что вы можете сделать с помощью SSI. Сегодняшняя дата Функция Если вам не нравится формат, в котором печатается дата, вы можете использовать функцию Дата модификации файла Эта функция также зависит от Включая результаты программы CGIЭто одно из наиболее распространенных применений SSI — для вывода результатов программы CGI, например, всеми любимого «счетчика посещений». Дополнительные примерыНиже приведены некоторые конкретные примеры того, что вы можете делать в своих HTML-документах с помощью SSI. Когда этот документ был изменен?Ранее мы упоминали, что вы можете использовать SSI, чтобы информировать пользователя о том, когда документ был изменен в последний раз. Однако фактический способ сделать это остался под вопросом. Следующий код, размещенный в вашем HTML-документе, поставит такую отметку времени на вашу страницу. Конечно, вам нужно будет правильно включить SSI, как обсуждалось выше. Конечно, вам нужно будет заменить
Для получения более подробной информации о Включая стандартный нижний колонтитулЕсли вы управляете каким-либо сайтом, состоящим из нескольких страниц, вы можете обнаружить, что внесение изменений во все эти страницы может быть настоящей проблемой, особенно если вы пытаетесь сохранить какой-то стандартный вид для всех этих страниц. Использование включаемого файла для верхнего и/или нижнего колонтитула может уменьшить нагрузку на эти обновления. Вам просто нужно создать один файл нижнего колонтитула, а затем включить его на каждую страницу с помощью
Я часто комбинирую две последние вещи, помещая директиву
Что еще можно настроить?В дополнение к возможности Обычно, когда что-то идет не так с вашей директивой SSI, вы получаете сообщение Если вы хотите изменить это сообщение на что-то другое, вы можете сделать это с помощью Будем надеяться, что конечные пользователи никогда не увидят это сообщение, потому что вы разрешите все проблемы с вашими директивами SSI до того, как ваш сайт будет запущен. (Верно?) И вы можете указать Выполнение командВот кое-что еще, что вы можете сделать с этой или в Windows Вы можете заметить некоторое странное форматирование этой директивы в Windows, потому что вывод Обратите внимание, что эта функция чрезвычайно опасна, поскольку она будет выполнять любой код, встроенный в тег
Продвинутые методы SSIВ дополнение к выдаче содержимого Apache SSI дает вам возможность устанавливать переменные и использовать эти переменные в сравнениях и условных выражениях. Установка переменныхИспользуя В дополнение к простому заданию значений буквально таким образом, вы можете использовать любую другую переменную, включая переменные среды или переменные, описанные выше (например Чтобы поместить буквальный знак доллара в значение вашей переменной, вам нужно экранировать знак доллара обратной косой чертой. Наконец, если вы хотите поместить переменную в середине более длинной строки, и есть шанс, что имя переменной натолкнется на некоторые другие символы и, таким образом, будет перепутано с этими символами, вы можете поместить имя переменной переменная в фигурных скобках, чтобы устранить эту путаницу. (Трудно привести действительно хороший пример этого, но, надеюсь, вы уловили суть.) Условные выраженияТеперь, когда у нас есть переменные и мы можем устанавливать и сравнивать их значения, мы можем использовать их для выражения условий. Это позволяет SSI быть своего рода крошечным языком программирования.
Структура этой условной конструкции: test_condition может быть любым видом логического сравнения - либо сравнение значений друг с другом, либо проверка "истинности" конкретного значения. (Данная строка истинна, если она не пуста.) Полный список доступных вам операторов сравнения см. в Например, если вы хотите настроить текст на своей веб-странице в зависимости от времени суток, вы можете использовать следующий рецепт, размещенный на HTML-странице: Любая другая переменная (либо определенная вами, либо обычные переменные среды) может использоваться в условных операторах. Дополнительные сведения о механизме оценки выражений см. в разделе Выражения в HTTP-сервере Apache. Благодаря способности Apache задавать переменные среды с помощью
ЗаключениеSSI, безусловно, не является заменой CGI или других технологий, используемых для создания динамических веб-страниц. Но это отличный способ добавить на страницы небольшое количество динамического контента, не выполняя много дополнительной работы. |