С чего начинается вебмастер? Не знаю, чему сейчас учат в школе, но как вебмастер я начался с файла index.html, который был создан на школьном компе с windows'98 в блокноте и открыт в ie6. До сих пор помню свой восторг - в том файле были описаны теги <title> и <body> - в шапке браузера появилась надпись "привет!", а в окне - "это мой сайт" :) Время прошло, я стал программистом, cms завоевали мир, а мне до сих пор приятно создать чистенький файл index.html и заполнить его.
Идею мне подал мой друг и коллега, Александр Бакаев. Он рассказывал о своём учителе информатики, у которого когда-то был сайт - каталог насосов. Сайт тот изначально был статическим и представлял собой набор html страниц, распределённых по папкам на сервере и, собственно говоря, всё. Он никогда не продвигался, никогда не оптимизировался, однако, по высокочастотным запросам в поисковых системах он выходил на первые места. Размышляя на эту тему, у меня родилась теория крутизны статических сайтов на фоне динамических, и мне захотелось реализовать полноценный сайт (позднее - блог), который будет работать без серверных скриптов и баз данных, но будет при этом удобным, максимально гибким и расширяемым.
Уважаемый читатель! Обращаю твоё внимание на слово "теория" в предыдущем абзаце. Это всего лишь теория, которую я в этот самый момент начинаю проверять экспериментально. Я ни в коем случае не пытаюсь сказать, что за статическими сайтами будущее или что на них срочно нужно всем переходить. Мне просто любопытно, используя технологии сегодняшнего дня, собрать статический ретро-блог.Преимущества статического сайта
- Безопасность - а чего там взламывать-то? Исходные коды все и так открыты, html файлы и так в публичной папке, и нет ни одного скрипта, который запускается на сервере. Если хранить доступ к серверу в надёжном месте, можете считать, что сайт неприступен.
- Быстрое открытие страниц - время уходит лишь на запрос и передачу конкретного html файла. Он уже лежит на сервере готовый, а не геренируется каждый раз заново.
- Пониженная нагрузка на сервер - в данном случае сервер выполняет лишь роль хранения и передачи данных. Никаких скриптов, никаких баз данных, никаких запросов к ним и связанных с этим нагрузок.
- Понятные адреса страниц - все системы ЧПУ в современных cms ориентированы на то, чтобы имитировать каталожную структуру хранения данных на сайте. Тут подделывать ничего не придётся, не придётся колдовать с mod_rewrite или редиректами. Документы изначально логично распределяются по директориям, что отражается и в структуре url.
- Отсутствие дублей - этот пункт вытекает из предыдущего. Любой специалист по внутренней оптимизации знает, как важно, чтобы одна и та же страница не была доступна по разным адресам. В случае со статическим сайтом это физически невозможно.
- Тонкая настройка - каждая страница - уникальна, независима и хранится в отдельном файле. Более тонкой настройки, чем в этом случае, получить вряд ли возможно.
Не всё так просто
Разумеется, я это понимаю. Если ты, читатель, мало-мальски представляешь, что такое cms, то наверняка уже думаешь о недостатках и ограничениях, которые накладывает использование статики.
- Отсутствие возможности шаблонизации - в подавляющем большинстве современных cms есть понятие шаблонов. В шаблонах содержатся элементы дизайна и разметки, повторяющиеся на разных страницах сайта. В случае со статикой их приходится многократно дублировать, а это неудобно, ненадёжно и совершенно не гибко. Чего только стоит представить ситуацию, если на сайт с несколькими сотнями статических статей, разложенных по папкам на сервере, потребуется вставить счётчик.
- Сложности навигации по сайту - менюшки, хлебные крошки, постраничная навигация. Мы ко всему этому так привыкли, что представть сайт без них - невозможно. А как добавить пункт в меню, если меню это продублировано на сотнях страниц? Как сделать список статей в категории с постраничной навигацией, если при добавлении новой статьи все элементы на всех страницах категории должны будут сместиться?
- Невозможность контроля доступа к данным - все файлы хранятся в публичной директории, а отсутствие авторизации не позволяет ограничить к ним доступ.
- Отсутствие интерактивности - пользователь ничего не может. Ну просто ничего - ни отправить комментарий, ни выполнить поиск по сайту, ни форму обратной связи заполнить.
- Сложности при наполнении - спорный вопрос, однако, для многих наличие админки с удобным интерфейсом и визуального редактора html кода является обязательным.
Вот, что в итоге получилось
Параметр | Динамический сайт | Статический сайт |
---|---|---|
Безопасность | на совести программиста | гарантирована |
Скорость работы | ниже | выше |
Нагрузка на сервер | выше | ниже |
ЧПУ | спляшем? | гарантируется |
Дубли страниц | есть опасность | невозможны |
Тонкая настройка | проблематична | не вопрос |
Шаблонизация | возможна | невозможна |
Навигация по сайту | удобна | ужасна |
Ограничение доступа к данным | возможно | невозможно |
Интерактивность | возможна | невозможна |
Удобство заполнения | удобна многим | для крутых ребят :) |
Стоит ли побороться?
Что касается недостатков из первой колонки - разумеется, бороться стоит. Борьба с ними даёт работу многим программистам и оптимизаторам, которые достигают в ней больших успехов. А вот стоит ли бороться с недостатками из второй колонки? Оправдают ли себя достоинства? Лично я - попробую. О методах борьбы с ограничениями, которые накладывает использование статики, и будет следующая заметка.