SSI для бедных
SSI – это простая и удобная технология организации динамических страничек. SSI экономит место на сервере, и одновременно делает администрирование сайта удобней в десятки раз! Все бы было хорошо, если бы... для использования этой технологии нужны специальные разрешения сервера. На бесплатном хостинге, у Вас поддержки этой технологии может не быть.
Возникает вопрос замены этой технологии. Конечно же! А кто будет переписывать 20 страничек своего сайта, если вдруг ему захочется добавить еще один пункт меню?!
Самыми популярными способами являются замена фреймами и с помощью JavaScript. Но, наверное, у этих способов больше недостатков, чем достоинств.
Я же предлагаю свой способ замены. Замена SSI на SSI! Конечно, с некоторым отличием.
Суть этого способа в том, что странички сайта будут собираться не на сервере, а непосредственно на компьютере создателя сайта, перед закачкой на сервер. И закачиваться на сервер будут уже собранные html странички. Но, обо всем по порядку. Для начала я хотел бы описать каждый из представленных методов замены SSI.
Фреймы
Это самый простой способ замены. В одном фрейме мы пишем меню, а во втором – отображаем информацию. Это было бы очень удобно, если бы не было таких недостатков:
1. Поисковые роботы очень плохо индексируют сайты с фреймами.
2. Фреймовые меню накладывают свой отпечаток на дизайн сайта.
3. Возможно открытие странички без фреймового меню, а это означает, что посетитель практически не сможет получить доступ к остальной информации сайта.
Именно по этому сайты, содержащие навигационные фреймы сейчас практически не создаются. Ведь недостатков у них намного больше чем достоинств.
Фреймовые структуры годятся больше для создания справочников, учебников, и другой offline литературы.
JavaScript
Этот язык клиентских сценариев дает нам намного больше возможностей, в сравнении с фреймами. Например, мы можем отмечать название текущей странички в навигационном меню, вставлять целые блоки информации с помощью одной директивы и много, много другого. JavaScript не требует разделения странички на блоки, как это делаю фреймы. JavaScript удобен, если бы...
Дело в том, что:
1.Поддержка JavaScript у некоторых людей может быть полностью отключен.
2.Текст, выводимый JavaScript, не индексируется поисковиками.
3.Модули JavaScript могут быть кэшированы браузером. Так что даже после внесения изменений на сайте, некоторые пользователи будут видеть старую информацию, которая была кэширована их браузером.
Комбинация
Это, наверное, только в математике, при умножении, два минуса дают плюс. В веб дизайне это не так – два минуса дают один огромный минус. Конечно, можно попробовать комбинировать фреймы и JavaScript, и возможно, вы добьетесь хороших результатов. Но, поверьте, эти результат не стоит затраченных на него усилий.
А вдруг, со временем, Вам захочется перенести Вашу страничку на платный хостинг. Что тогда? Вам приодеться переписывать сайт заново?
Мой способ универсален. Его можно использовать как на бесплатном так и на платном хостинге. При этом, используя платный хостинг, Вам не нужно будет делать никаких премудростей. Достаточно чуть-чуть подкорректировать сайт, залить на сервер – и ресурс работает.
Действительно, что может быть проще замены SSI на SSI? Конечно, если вы хорошо знаете эту технологию. Я так же предполагаю, что вы знакомы с языком Perl, с помощью которого будет собираться сайт.
Итак, что нам нужно:
1. Во-первых это сайт, написаний с использованием технологии SSI.
2. Домашний веб сервер Apache + Perl
Определимся со структурой
Для удобства я буду использовать свои пути, которые Вы можете, при необходимости, изменить.
И так, моя домашняя страничка находиться в папке e:/projects/page/
Исходник с использованием SSI находиться в папке e:/projects/page/www/. Эта папка связана с моим виртуальным хостом dvl999.vinnitsa.com, и при обращении к ниму происходит чтение и обработка сервером содержимого папки.
Скрипт для публикации находиться в e:/projects/page/publisher/publisher.pl
Папка странички, готовой к публикации - e:/projects/page/pub/
Подготовка сайта
Копируем все содержимое папки www в папку pub. Единственные файлы, которые будут изменены – это html файлы. А поэтому ищем и удаляем в папке pub html файлы, а также ssi-вставки, которые нам так же не нужны. Для автоматизации процесса можно использовать любой файл-менеджер, с поддержкой вывода результатов на «панель». Например, FAR.
О скрипте
Скрипт publisher.pl имеет следующий код:
use LWP::Simple;
$site='http://dvl999.vinnitsa.com';
$pubdir='../pub';
open(FV,"pub.txt");
@data=<FV>;
close FV;
foreach $s(@data){
$s=~ s/\n//g;
$s=~ s/\r//g;
$content = get($site.$s);
print "$pubdir$s\n";
die "Couldn't get it!" unless defined $content;
open (FV,">$pubdir$s");
print FV "$content";
close FV;
}
Для запуска, используйте интерпретатор Perl – perl.exe
Пример базы данных:
/about/index.htm
/about/anketa.htm
/about/photo.htm
/creative/index.htm
/creative/graph.htm
/creative/portfolio.htm
/creative/stat.htm
/creative/st/01/index.htm
/creative/st/02/index.htm
/creative/st/03/index.htm
/creative/st/04/index.htm
/creative/st/05/index.htm
/friend/index.htm
/guest/index.htm
/misli/index.htm
/index.htm
Принцип действия скрипта прост. Моя страничка имеет виртуальный хост http://dvl999.vinnitsa.com. Например, используя первую строчку базы данных(/about/index.htm), происходить чтение странички http://dvl999.vinnitsa.com/about/index.htm. Это делается по средствам модуля LWP.
Прочитанная и обработанная страничка записывается по адресу pub/about/index.htm. Таким образом, будут обработаны все странички, находящиеся в базе данных.
И остается только закачать содержимое папки pub на Ваш сервер.
Вот такой способ. Из достоинств: универсальность, хорошая индексация поисковыми роботами, независимость от настроек браузера клиента, связанных с отключением JavaScript и фреймов. Из недостатков лишь то, что, возможно, Вам придется закачивать все html файлы вашего сайта после обновления ресурса. Но, это в худшем случае.
Кстати, для оптимизации этого действия, Вы можете ознакомиться с материалами статьи:
"Экономим Интернет. Заметка для вебмастера"