Недавно один из моих сайтов на CMS Joomla переехал на довольно медленный хостинг на котором почти сразу же начались проблемы с нагрузкой. Сайт довольно большой (несколько тысяч страниц в индексе Яндекса), ну и сама CMS Joomla1.5 тоже не из легких и мне потребовалось срочно найти решение, которое бы позволило снизить нагрузку на сервер не внося никаких радикальных изменений в сам сайт. Решение, которое я применил, получилось из разряда “быстро, дешево и сердито”, но полностью решило поставленную задачу – сайт превратился в статический
Как это было сделано – читайте дальше…
Задача была разбита на две основные части:
Итак, всё что мне потребовалось сделать… Для пункта первого: была создана директория /static/ для хранения кеша и в файл index.php корневой папки Джумлы, в самый конец, после строк:
// trigger the onAfterRender events JDEBUG ? $_PROFILER->mark('afterRender') : null; $mainframe->triggerEvent('onAfterRender');
добавились такие строки:
$page = JResponse::toString($mainframe->getCfg('gzip')); $DOCUMENT_ROOT = 'полный/путь/к/корневой/папке'; $filecache = $DOCUMENT_ROOT . 'static' . $_ENV['REQUEST_URI']; $cache = fopen($filecache, 'w'); fwrite($cache, $page); fclose($cache); echo $page;
Если всё сделано правильно, то после этого шага копии открытых страниц уже сохраняются в директории /static/. Осталось только сделать чтобы веб-сервер отдавал сохраненную копию страницы вместо выполнения кода Джумлы. Это было сделано при помощи таких нескольких строк:
RewriteCond %{REQUEST_METHOD} GET
RewriteCond /полный/путь/к/корневой/директории/static/%{REQUEST_URI} -f
RewriteRule .* /static/%{REQUEST_URI} [L]Всё, несколько минут и по мере того, как страницы сайта посещают посетители и поисковые боты, генерируются новые страницы, сохраняются в кеше и сайт плавно превращается в статический, причем сохраняются все преимущества CMS Joomla по удобству редактирования и управления контентом.
Если вам понравился этот сайт, вы можете подписаться на rss
Отзывы: Комментариев нет
Ваш отзыв