| Уменьшаем нагрузку от поисковых роботов |
|
|
|
Довольно часто пользователи жалуются на излишнюю прожорливость Jooml-ы. Иногда это правда, а иногда просто ее надо настроить. В данной заметке будет расказано о замеченном факте возникновения "лишней нагрузки" на сервер проектами, основанными на Jooma 1.0 и о том, какие есть рецепты борьбы с этим. И так попорядку. Существует ряд причин почему Joomla грузит:
И так первый случай лечится достаточно просто и стандартно и рекомендация тут может быть только одна. Я применяю на своих сайтах модуль apache eAccelerator (его не трудно найти в гугле) его задача одна сохранить -откомпилированный php код для дальнейшего использования без перекомпиляции. После подключения этого модуля на реальных сайтах нагрузка вцелом на систему уменьшается примерно в 3-5 раз. Что согласитесь прилично!!! А главное достаточно просто. Если вы не можете сами поставить на сервере этот модуль, то попросите сделать это админов хостинга, когда они в очередной раз пришлют вам петицию о перегрузке их сервера вашими задачами. Я думаю они вам не откажут. Ну а если будут сомневаться пусть почитают как хабрахабра испытала это на себе. Про второй случай отправим читать маны .... И так рассмотрим третий случай, что можно сделать с этой "заразой". Ведь не запрещать же поисковикам ходить на наш сайт. В большинстве случаев мы сами рады, что они к нам заходят. Надо только минимизировать нагрузку от них. Находим файл /includes/Cache/Lite/Lite.php и в нем в конец файла добавляем функцию: (Прежде чем проделывать все изменения настоятельно рекомендую сделать копию данного файла) function _check_brouser() { $agent = ''; if ( isset($_SERVER['HTTP_USER_AGENT']) ) { $agent = $_SERVER['HTTP_USER_AGENT']; } else { $agent = 'google'; } if (preg_match( "/Rambler/i", $agent) || preg_match( "/yahoo/i", $agent ) || preg_match( "/cravel/i", $agent ) || preg_match( "/yahoo/i", $agent ) || preg_match( "/google/i", $agent ) || preg_match( "/bot/i", $agent ) || preg_match( "/xap/i", $agent ) || preg_match( "/sape/i", $agent ) || preg_match( "/search/i", $agent ) || preg_match( "/slurp/i", $agent ) || preg_match( "/http/i", $agent ) || preg_match( "/upload/i", $agent ) || preg_match( "/yandex/i", $agent )) { $this->_brouser = false; } else { $this->_brouser = true; } }Находим строчки: var $_automaticSerialization = false; .......... function Cache_Lite($options = array(NULL)) { .......... $this->_refreshTime = time() - $this->_lifeTime; } .......... function get($id, $group = 'default', $doNotTestCacheValidity = false) { .......... } ........... function remove($id, $group = 'default') { ......... }и добавляем: var $_automaticSerialization = false; var $_brouser = false; ......... function Cache_Lite($options = array(NULL)) { ......... $this->_refreshTime = time() - $this->_lifeTime; $this->_check_brouser(); } .......... function get($id, $group = 'default', $doNotTestCacheValidity = false) { if (!$this->_brouser) $doNotTestCacheValidity = true; ........... } ........... function remove($id, $group = 'default') { if (!$this->_brouser) return true; ............ Вот собственно и все. Вся идея состоит в том, что если пришел к нам робот, то ему в любом случае подсоввывать закешированную страницу, если она есть. Да же тогда когда время жизни кеша установленное в админке уже прошло. |
| След. » |
|---|


