Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Как видите, документ head.ssi должен быть обработан SSI-интерпретатором, но документ tail.inc полностью статичен и в такой обработке не нуждается. Как сэкономить ресурсы сервера и производить обработку только там, где это необходимо?
Мы не случайно дали включаемым файлам разные расширения. Теперь ответ прост: надо включить механизм SSI для файлов с расширением .ssi, и только для них. Для этого используем следующие конфигурационные директивы:
AddHandler server-parsed .ssi
AddType text/html .ssi
Первая – включает SSI-интерпретатор для .ssi-файлов. Вторая – ассоциирует их с MIME-типом text/html; это чисто косметическая мера, SSI-интерпретатор не обращает внимания на MIME-тип включаемой информации; эту директиву можно и опустить.
Конечно, мы предполагаем, что SSI-интерпретация разрешена директивой Options:
Options +Includes
Следует также добавить, что такой вариант подключения SSI справедлив для Apache 1.3. В Apache 2.0 указанные директивы будут работать точно так же, потому что разработчики позаботились об обратной совместимости. Однако на самом деле механизм SSI в Apache 2.0 реализован принципиально иначе (в виде фильтра) и «правильно» подключается иначе. В этой статье я не буду касаться специфики Apache 2.0, все приведённые примеры будут работать одинаково на обоих версиях сервера, но я бы советовал пользователям второй версии хотя бы бегло просмотреть документацию – различий между версиями гораздо больше, чем может показаться.
Теперь файлы с расширением .ssi будут обрабатываться, а файлы .inc будут вставляться «как есть». Кстати, можно было бы и для них прописать MIME-тип.
Если переименовать все файлы затруднительно, то можно воспользоваться директивой XBitHack on. Она, как вы, наверно, знаете, предписывает SSI-интерпретатору обрабатывать файлы с установленным битом исполняемости (бит x).
Это очень удобно, так как позволяет включать и выключать SSI-интерпретацию файла, не меняя его имени, а просто изменяя его атрибуты. Но есть у директивы XBitHack и большой минус – её невозможно использовать, если файловая система не допускает атрибут x. То есть под Windows эта директива абсолютно бесполезна.
Регламентируем кэширование
По понятным причинам сервер не выдаёт для SSI-документов HTTP-заголовки Last-Modified и ETag, что практически полностью исключает возможность их кэширования. Это не всегда полезно, например, если информация обновляется раз в неделю, то кэширование на час-два совсем не помешало бы.
К счастью, сервер может выдавать информацию о том, до какого времени данный документ сохранит свою актуальность. Передаётся она в HTTP-заголовке Expires. Управлять ею можно при помощи трёх директив: ExpiresActive, ExpiresByType и ExpiresDefault.
Директива ExpiresActive допускает два значения аргумента: on или off. Она разрешает или запрещает генерирование заголовка Expires. Обратите внимание: даже если заголовок Expires разрешён, он не будет генерироваться, если он не определён для документа данного MIME-типа. Обратное также верно: если заголовок определён, но его генерация не разрешена, то, естественно, тоже не будет генерироваться.
Директива ExpiresByType описывает, как именно должно вычисляться время актуальности документа данного MIME-типа. Самый простой синтаксис таков:
ExpiresByType MIME-тип <A/M>секунды