Как это обычно бывает, со временем возникают ситуации, когда сайт уже "не тянет". Это определяется многими показателями. Это и наличие большого числа( объема) контента, и наличие зарегиных пользователей, и (безусловно) "списочный состав" установленных модулей.
В общем вспомнил о старом (достаточно) модуле для 4.7 - boost.
Основная задача этого модуля - генерация статических страниц, складирование их в каталоге \cache\имя-сайта\0\структура-каталогов-как-зеркало-урла
Т.е. например, если урл вашей новости виден в сети как newssite.ru\news\2007\04\25\12345 (по pathauto, по path он будет виден как \node\12345) То будет создана 2 каталога:
news\2007\04\25\ и в нем 12345.html файл и \node и в нем соответствено 12345.html
Причем следует заметить, что на самом деле первый файл 12345.html это не файл, а ссылка на файл (symlink) И это справедливо, ведь реальный-то урл - node\12345, а news\2007\04\25\12345 - это его синоним (подмена)
Ну в общем пошел я на офф сайт, и в дебатах выяснил, что автор де занят сильно, ему сил тока-тока на разгребание ошибок в 4.7 хватает и к 5-ой версии приступит, если найдутся бойцы кои ему эти патчи помогут написать. Вот тогда-то он во всеми силами и возьмется.
Среди авторов постов был замечен и небезызвестный нам всем Axel. Поспрошав про планы на версию 5, услышав вышеизложенное, подождав некое время, взял да и написал (апгрейднул) модуль до версии 5.х - читайте здесь http://drupal.org/node/103892
В общем взял я сей модуль на вооружение и начал с ним, так сказать исполнять танцы с бубнами.
Поставил ( обновил .htaccess) - и тишина. Ничего не происходит... все осталось как есть, ну, думаю, уже хорошо.
Смотрю error_log апача - а там
-неопределена функция drupal_get_normal_path в 14 строке модуля boost.module
Смотрю api.drupal.org - сея функция в path.inc определена.
Пришлось вставить
include_once './includes/path.inc';
чуть выше по коду и все заработало.
Ну далее опять посыпались ошибки, типа syslink() неизвестная функция. Искал в коде drupal - Не нашел. Оказалось, что это php-функция и в windows-платформах не работает. (сразу сообщу, что в пхп я не очень...так только основы. функции наизусть как Object Pascal я не знаю)
Ну думаю - делать нечего поставлю на боевой сервер - тама всеж не онка-форточки, а самая что ни на есть freeBSD.
Поставил. Работать начала, файлики, директории в каталоге cache стали создаваться, Каращо! Тока смотрю особенность какая-то есть! Файлы по "живому" урлу создаются (\node\12345.html) а по линку нет. нет фала \news\2007\04\25\12345.html ! И весь watchdog вот такими ошибками полон
Unable to create symlink: /home/uХХХХ/мой_сайт.ru/www/cache/мой_сайт.ru/0/news/2007/04/25/3337.html to /home/uХХХХ/мой_сайт.ru/www/cache/мой_сайт.ru/0/node/3337.html
и еще
symlink() [<a href='function.symlink'>function.symlink</a>]: open_basedir restriction in effect. File(/node/3337.html) is not within the allowed path(s): (/home/uXXXXX/) в файле /home/uXXXXX/мой_сайт.ru/www/sites/all/modules/boost/boost.helpers.inc в строке 83.
Кто разбирался с boost`om Подскажите! плз!
ЗЫ на сервере стоит Apache ??? (drupal не определяет) php 5.2.x, mysql 5.x, Drupal 5.1
Комментарии
не знаю, он у меня и на 4.7 не вставал... то есть файлы создавал... но не работал...
а сейчас-то уж не знаю... да и динамики сайт не хотелось бы лишать... иначе зачем вообще CMS нужен...
больше хотелось бы не модуль, такой как boost, а примерно похожий, который при отсутствии коннекта с базой данных, перебрасывал бы пользователя на сохранённую html версию сайта...
На drupal.org я кинул патч, но поскольку автор не проявил пока интереса к апагрейду, то я продолжаю вести разработку у себя - позже общий патч с изменениями выложу на drupal.org. Поэтому последние исходники лучше брать отсюда: http://www.drupal.ru/repo/modules/boost/5.x/ (можно броузером, а вообще там репозитарий под Bazaar-NG -
$bzr get http://www.drupal.ru/repo/modules/boost/5.x
).Замеченные баги: иногда вместо кешированной страницы index.php подставляется access denied. Иногда кешируются "старые" версии страниц, для тех страниц которые имеют пейджер (например для tracker будет показываться содержимое tracker?page=2). Вообще фича модуля, страницы с параметром '?' не кешировать, т.е. tracker должен кешироваться, а tracker?page=2 вообще не должен - это работает, но судя по всему не всегда как надо.
Вообще, модуль заточен под юниксовую платформу. На windows можно даже не пробовать сейчас. Линки на внутренние директории создаются корректно, ошибок с ними не заметил, ошибки с drupal_get_normal_path в текущей версии также не замечено.
Багрепорты по модулю принимаются - будут с ним разбираться дальше. Пока имхо на продуктиве применять рискованно - с drupal.ru его я убрал. Да, на drupal.ru после включения модуля начались проблемы с отлогиниванием пользователей - подсовывались кешированные страницы юзерам которые уже вошли на сайт. Вроде я это поборол, но надо тестировать ещё.
а как тестировать-то? где тест-сайт?
Можно поставить на demo.drupal.ru или вообще отдельный сайт заведу. На днях сделаю.
хорошо, было бы неплохо...
хотя на работающем сайте лучше, жалобы появятся сразу...
А должно пройти какое-то время, чтобы boost прокешировал страницы? А то у меня некоторые ноды кешируются, а некоторые нет... (например, 3220 кешируется, а 1195 - нет).
Кешируется при обращении любого посетителя к ноде. Следущий раз для анонима результат будет выбран из кеша. При этом, через некоторое время (время жизни в кеше) страница из кеша стирается и обратившись к ней результат снова будет генерироваться движком и записываться в кеш.
Хм ... На D6 странный эффект. Авторизованный пользователь попадая на главную страницу теряет права до анонима. Причем происходит это только на главной - все остальные страницы и разделы ведут себя адекватно.
Да, на drupal.ru после включения модуля начались проблемы с отлогиниванием пользователей - подсовывались кешированные страницы юзерам которые уже вошли на сайт. Вроде я это поборол, но надо тестировать ещё.
Подскажите пожалуйста в чем тут проблема и где крутить ориентировочно?