Оптимизация Joomla (черновик)

  • 99 Ответов
  • 119381 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Physicist

  • *****
  • 963
  • 185
  • Рябов Денис
Я решил написать статью по оптимизации Joomla для моего блога joomup.com/blog. А пока статья находится в процессе написания, выкладываю на всеобщее обозрение ее «черновик» (даже скорее «краткое содержание первой части»). Любые дополнения и критика приветствуются.


Сегодняшняя статья должна заинтересовать многих, так как она посвящена проблеме оптимизации Joomla, т.е. повышению ее производительности.

Хочу сразу предупредить, что повысить производительность Joomla на несколько порядков только за счет оптимизации вряд ли удастся. Поэтому задумайтесь, может быть имеет смысл сменить хостинг, перейти на виртуальный сервер, на выделенный сервер, проапгрейдить сервер, использовать несколько серверов (тут можно отметить pdf-руководство Joomla Cluster на forum.joomla.org), и т.д.

В этой статье я постараюсь описать только то, что можно сделать, не внося изменений в файлы Joomla (т.е. вы сможете безболезненно делать последующие обновления Joomla), и лишь в конце слегка коснусь того, какие изменения можно сделать в файлах Joomla для ускорения ее работы (эта часть еще не написана). Самые «существенные» советы отмечены знаком «*».

Сначала несколько советов, которые применимы к любой CMS, написанной на PHP:

1*. Используйте обновленное ПО. Например, PHP 5.2 работает почти в 2 раза быстрее, чем PHP 4.4.

2*. Используйте PHP-акселлераторы. Среди самых известных можно выделить Alternative PHP Cache (APC), eAccelerator, XCache, Zend Optimizer. По данным тестов joomla.org, самая быстрая работа Joomla обеспечивается с использованием APC и PHP 5.2.2 (см. выше про производительность PHP).

3.* Оптимизация Apache. Если вы используете сервер Apache, оптимизируйте его под свои нужды (на сайте www.crucialp.com описано, как провести оптимизацию под большой трафик).

4. Не обязательно использовать сервер Apache. Вместо него можно использовать более быстрый Lighttpd. Об использовании Joomla с Lighttpd написано на сайте ircmaxell.com: тут и тут.

5.* Оптимизация MySQL. По-умолчанию MySQL устанавливается с минимальными настройками. Попробуйте изменить эти настройки в соответствии с возможностями вашего сервера (советую прочитать статьи на joomlaperformance.com и profitpapers.com). Хорошим способом ускорить работу MySQL является настройка кэширования запросов. Текущее состояние параметров кэша можно увидеть, выполнив команду "SHOW STATUS LIKE 'qcache%';". Параметр query_cache_type должен иметь ненулевое значение, а в параметре query_cache_size должен быть указан размер кэша (именно это значение вам придется подобрать для обеспечения наилучшей производительности). Все эти параметры задаются в вашем файле my.cnf, например:
Код
query_cache_type = 1
query_cache_size = 20M
query_cache_limit = 2M
Уделите внимание параметру max_connections. Увеличьте его значение, иначе вас очень быстро настигнет проблема "too many connections".

6. Подумайте о переносе картинок в наполненном графикой популярном посте на отдельный сервер или хостинг. Можно использовать мощности бесплатных сервисов (например flickr) и разместить изображения там. Точно также можно перенести и многие другие файлы.

7. Если вы используете свой сервер также в качестве DNS-сервера, то уменьшить нагрузку на сервер можно, вынеся DNS на отдельный сервер.

8. Не забудьте включить gzip-сжатие, если хотите уменьшить трафик (правда, это слегка увеличит нагрузку на процессор).  Кстати, это можно сделать не только для html-страниц, генерируемых Joomla, но и для всех css и js файлов. Если на вашем сервере установлен Apache 2, то просто добавьте следующие директивы в ваш файл .htaccess:
Код
<FilesMatch "\.(js|css)$">
SetOutputFilter DEFLATE
</FilesMatch>

9. Совершенно не к чему каждый раз загружать одни и те же css/js файлы и графику. Как правильно поместить их в кэш браузера, описано на apachedev.ru, а для знающих английский рекомендую статью на askapache.com.

10. Оптимизируйте графику в шаблоне. Некоторые сайты славятся тем, что загружают несколько сотен килобайт картинок. Вообще, проверяйте объем загружаемой информации и время загрузки на сайте http://www.websiteoptimization.com/services/analyze/index.html.

11. Старайтесь уменьшить количество запросов к серверу. Постарайтесь объединить имеющиеся css-файлы в один. То же самое относится и к js-скриптам. Да и сами файлы очистить от лишнего мусора.

12. Для более быстрого отображения страницы в браузере желательно, чтобы на странице не было ошибок. Вы можете проверить свой сайт, например, на validator.w3.org.

13?. Добавьте favicon.ico и favicon.gif в корень сайта, т.к. некоторые браузеры сначала запрашивают их, а не те, которые указаны в коде страницы (их не так много, но в логах сервера эти запросы появляются с завидной регулярностью).

Теперь перейдем к советам, относящимся к собственно Joomla.

14*. Включите кэширование для всех модулей, для которых это возможно. Время жизни кэша определите из условия: сколько времени вы готовы ждать, пока добавленная новость появится в модуле последних новостей? Для одних сайтов это будет 10 минут, для других – час, для третьих – сутки. (Если хотите, вот числа: в «свежеустановленной» Joomla при посещении главной страницы генерируется 36 запросов, а с включенным кэшированием модулей — всего 13 запросов).

15*. Добавьте индексы для таблиц в БД. Тут есть несколько альтернативных предложений по оптимизации: ircmaxell.com и forum.joomla.org (перевод на русский — joomlaportal.ru). Я бы рекомендовал те, что описаны на forum.joomla.org, т.к. на ircmaxell.com уж очень большие индексы создаются.

16*. Не забывайте, что при частом изменении таблиц БД они сильно возрастают в размере, поэтому время поиска по БД тоже возрастает. Поэтому БД нужно регулярно оптимизировать (по сути — сжимать). Установите мамбот OptimizeTables (от smart'а) или выполняйте оптимизацию таблиц вручную (выделите все таблицы через phpMyAdmin, и выполните команды repair и optimize).

17*. Можно сменить тип таблицы jos_session на memory:
Код
alter table jos_session type=memory;
(если ваша версия Joomla использует другой префикс таблиц, то не забудьте заменить «jos» на него).

18*. Отключите встроенную статистику. В большинстве случаев статистика, предоставляемая хостер;ом, дает намного больше информации о посетителях. Но можно оставить статистику поисковых запросов.

19. Удалите лишние (неиспользуемые) расширения (компоненты, модули, мамботы).

20. Много запросов образуется при формировании списки новостей в различных модулях (из-за получения Itemid для каждой новости). Это можно ускорить, используя постоянный Itemid, появившийся в 1.0.12.

21. Много запросов зачастую генерируют сторонние SEF-компоненты. При большой нагрузке лучше использовать встроенный SEF, или не использовать SEF вовсе (кстати, встроенный SEF практически не требователен к ресурсам; более того, по данным теста joomla.org  Joomla!1.5 с включенным SEF работает быстрее, чем с отключенным).

22. Старайтесь не использовать в настройках пунктов меню «Category Name Linkable» («Названия категорий в виде ссылок»).

23. Для полей id в таблицах БД можно вместо типа int(11) указать smallint unsigned, что приводит к небольшому уменьшению объема памяти, требуемого для хранения БД.

24. Закройте через robots.txt от индексации поисковыми ботами компонент com_search и файл index2.php. Также можно закрыть com_wraper и com_newsfeed (ленты новостей), т.к. поисковики могут посчитать это дублированным контентом. Ниже приведен набор правил для встроенного SEF:
Код
User-agent: *
Disallow: /index2.php?
Disallow: /component/option,com_search/
Disallow: /component/option,com_newsfeeds/
Disallow: /component/option,com_wrapper/
Кстати, в robots.txt можно также ограничить (на всякий случай) доступ поисковиков к файлам Joomla:
Код
Disallow: /administrator/
Disallow: /cache/
Disallow: /components/
Disallow: /editor/
Disallow: /help/
Disallow: /includes/
Disallow: /language/
Disallow: /mambots/
Disallow: /media/
Disallow: /modules/

25. Перед использованием любого расширения никогда не забывайте проверить, нет ли у него более быстрых аналогов.

26. Оптимизируйте используемый шаблон (например, удалите лишние пробелы и переводы строк).
« Последнее редактирование: 13.06.2008, 21:22:01 от Physicist »

*

FxPunter

  • *****
  • 693
  • 105
  • Э-эх!
Re: Оптимизация Joomla (черновик)
« Ответ #1 : 24.01.2008, 21:55:46 »
+1
суппер! Жду продолжения :)

*

beliyadm

  • ********
  • 8359
  • 1527
  • Севастополь == Россия
Re: Оптимизация Joomla (черновик)
« Ответ #2 : 24.01.2008, 22:16:41 »
И не забываем про эту тему
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

eX

  • ****
  • 258
  • 72
Re: Оптимизация Joomla (черновик)
« Ответ #3 : 25.01.2008, 11:37:41 »
Отличный топик! Можно после чернового варианта в Knowledge Base отнести. Поддерживаю развитие ветки.

Позже...
Предлагаю boston-у интегрировать данные решения по отношению к Joostin-е, тогда цены ей не будет! :)
« Последнее редактирование: 25.01.2008, 11:49:33 от eX »

*

Sedoy

  • *****
  • 910
  • 76
  • Интересно,в какой кодировке пишут врачи?
Re: Оптимизация Joomla (черновик)
« Ответ #4 : 25.01.2008, 12:18:33 »
>19*. Удалите лишние (неиспользуемые) расширения (компоненты, модули, мамботы).

есть разница между "удалите" и "отключите" в разрезе оптимитизации?
т.е. обязательно удалить или можно просто отклюсить?
Что б правильно задать вопрос - нужно знать на него ответ!
смотри FAQ по Joomla!
Где скачать шаблоны Joomla
Статьи и обзоры
Желаю Вам здоровья в личной жизни - живите долго и часто :)

*

Physicist

  • *****
  • 963
  • 185
  • Рябов Денис
Re: Оптимизация Joomla (черновик)
« Ответ #5 : 25.01.2008, 16:03:53 »
>19*. Удалите лишние (неиспользуемые) расширения (компоненты, модули, мамботы).

есть разница между "удалите" и "отключите" в разрезе оптимитизации?
т.е. обязательно удалить или можно просто отклюсить?
Мамботы — да, лучше удалить, т.к. они загружаются независимо от того, включены они или нет.
Модули — не критично, т.к. они загружаются в один запрос (но этот запрос выполняется при каждой генерации страницы, поэтому чем меньше будет записей в таблице, тем быстрее будет происходить выборка).
Компоненты — в принципе, тоже не критично.

*

Physicist

  • *****
  • 963
  • 185
  • Рябов Денис
Re: Оптимизация Joomla (черновик)
« Ответ #6 : 25.01.2008, 16:05:15 »
Предлагаю boston-у интегрировать данные решения по отношению к Joostin-е, тогда цены ей не будет! :)
То, что описано тут — это не «хаки», т.е. внедрить их трудно.
« Последнее редактирование: 25.01.2008, 19:13:21 от Physicist »

*

b2z

  • *****
  • 7449
  • 741
  • Разраблю понемногу
Re: Оптимизация Joomla (черновик)
« Ответ #7 : 25.01.2008, 16:10:10 »
Цитировать
20. Много запросов образуется при формировании списки новостей в различных модулях (из-за получения Itemid для каждой новости). Это можно ускорить, используя постоянный Itemid, появившийся в 1.0.12.
А где это включается?

*

Physicist

  • *****
  • 963
  • 185
  • Рябов Денис
Re: Оптимизация Joomla (черновик)
« Ответ #8 : 25.01.2008, 16:47:42 »
А где это включается?
1.0.12 именно так работает по-умолчанию, а в 1.0.13 это настраивается в Site->Global Configuration->Content->Itemid Compatibility Mode

*

b2z

  • *****
  • 7449
  • 741
  • Разраблю понемногу
Re: Оптимизация Joomla (черновик)
« Ответ #9 : 25.01.2008, 17:13:43 »
Понял, спасибо. Ну у меня 1.0.12 :)
По поводу мамботов - у меня на данный момент отключены следующиЕ:

Изображение MOS (вроде как и не нужен, так как есть JCE)
Включение наследования мамботов
Поддержка кода
Рейтинг MOS (не использую)
GeSHi
WYSIWYG-редактор TinyMCE (не использую - есть JCE)
Кнопка изображения MOS в редакторе (не использую - есть JCE)
и ещё ставил  XAJAX System Mambot For Joomla (но вырублен уже давно)

Какие из них можно 100% удалить?

*

beliyadm

  • ********
  • 8359
  • 1527
  • Севастополь == Россия
Re: Оптимизация Joomla (черновик)
« Ответ #10 : 25.01.2008, 18:35:12 »
Какие из них можно 100% удалить?
все, кроме наверно "Включение наследования мамботов"
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

boston

  • *****
  • 499
  • 219
Re: Оптимизация Joomla (черновик)
« Ответ #11 : 25.01.2008, 18:45:22 »
То, что описано тут — это «хаки», т.е. внедрить их трудно.

Трудно? :)
То что касается настройки сервера - канечно из Joostina ковырнуть не получится, а вот всё в системе можно сделать по-нормальному.
К моменту выхода финальной версии Joostina 1.1.2 постараюсь описать какие еще ходы использовались для обеспечения оптимизации.
Самая новая Joostina 1.3.0.5 UTF-8 stable | О найденных ошибках сообщаем | Расширения Joostina

*

Physicist

  • *****
  • 963
  • 185
  • Рябов Денис
Re: Оптимизация Joomla (черновик)
« Ответ #12 : 25.01.2008, 19:31:10 »
boston, я опечатался (имел в виду «не хаки»).
А многое из того, что можно поменять в коде Joomla, в Joostina я смотрю уже реализовано. Пока «навскидку» из того, что еще можно сделать:

— можно заменить в index.php и index2.php формирование заголовков для некэширования страницы на кэширование, например, на 1 час:
Код
header( 'Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT' );
//1-hour-cache: 60*60=3600
header( 'Expires: '.gmdate('D, d M Y H:i:s',time()+3600).' GMT' );
header( 'Cache-Control: max-age=3600' );
//header( 'Cache-Control: no-store, no-cache, must-revalidate' );
//header( 'Cache-Control: post-check=0, pre-check=0', false );
//header( 'Pragma: no-cache' );

— можно в запросы, в которых определяется, какие статьи отображать, передавать время не с точностью до минуты, а с точностью до часа (тогда MySQL будет результат запроса в течение часа хранить в своем кэше). Для этого нужно в /includes/joomla.php найти строки
Код
// current server time
$now = date( 'Y-m-d H:i', time() );
DEFINE( '_CURRENT_SERVER_TIME', $now );
и заменить вторую строку на
Код
$now = date( 'Y-m-d H:00', time() );

Может потом что еще добавлю.

*

Physicist

  • *****
  • 963
  • 185
  • Рябов Денис
Re: Оптимизация Joomla (черновик)
« Ответ #13 : 25.01.2008, 20:14:23 »
Какие из них можно 100% удалить?
В первую очередь те, которые обрабатывают контент даже когда отключены:
Изображение MOS (вроде как и не нужен, так как есть JCE)
Поддержка кода
GeSHi
насчет остальных — по желанию.

*

Physicist

  • *****
  • 963
  • 185
  • Рябов Денис
Re: Оптимизация Joomla (черновик)
« Ответ #14 : 25.01.2008, 20:23:21 »
Вообще, у Joomla (как и у любой другой CMS, основанной на связке PHP+MySQL) есть два слабых места, которые и нужно ликвидировать (а всё остальное — «мертвому припарка»):

1. Собственно PHP. Проблема заключается в том, что нужно при каждой генерации страницы загружать множество php-скриптов и заново их анализировать. Эта проблема решается установкой PHP-аккселераторов, которые кэшируют так называемые опкоды (т.е. в каком-то смысле частично откомпилированные скрипты).

2. MySQL. Тут основная проблема в том, что запросов много, и обрабатываются они медленно (к тому же как правило MySQL-сервер устанавливается на отдельный сервер). Поэтому тут очень важно уменьшить общее количество запросов в Joomla, плюс, настроить кэширование результатов выполнения запросов в самой MySQL.

Всё остальное может лишь незначительно увеличить быстродействие.

*

b2z

  • *****
  • 7449
  • 741
  • Разраблю понемногу
Re: Оптимизация Joomla (черновик)
« Ответ #15 : 25.01.2008, 20:44:31 »
По поводу пункта 11 - разве можно объедеинть все CSS и JS файлы в один безболезненно? Ведь по идее каждый компонент подключает свои файлы отдельно. То есть полчается, что надо кроме объеденения ещё и править пути?

*

Physicist

  • *****
  • 963
  • 185
  • Рябов Денис
Re: Оптимизация Joomla (черновик)
« Ответ #16 : 25.01.2008, 20:59:57 »
По поводу пункта 11 - разве можно объедеинть все CSS и JS файлы в один безболезненно? Ведь по идее каждый компонент подключает свои файлы отдельно.
Проблема в том, что
1) несколько css и js файлов могут загружаться прямо в шаблоне (есть такие шаблоны);
2) в добавок, некоторые мамботы дописывают к ним свои css и js;
3) ну, и наконец, компонент добавляет туда свои.
Так вот, задача состоит в том, чтобы попытаться уменьшить общее количество этих файлов.
То есть полчается, что надо кроме объеденения ещё и править пути?
Нет. Можно, например, перенести все css-стили в template_css.css, а в мамботах и компонентах закомментировать добавление в хедер ссылок на свои файлы.

*

PaLyCH

  • ******
  • 973
  • 127
  • Архитектор сайтов
Re: Оптимизация Joomla (черновик)
« Ответ #17 : 28.01.2008, 17:42:45 »


24. Закройте через robots.txt от индексации поисковыми ботами компонент com_search и файл index2.php. Также можно закрыть com_wraper и com_newsfeed (ленты новостей), т.к. поисковики могут посчитать это дублированным контентом. Ниже приведен набор правил для встроенного SEF:
Код
User-agent: *
Disallow: /index2.php?
Disallow: /component/option,com_search/
Disallow: /component/option,com_newsfeeds/
Disallow: /component/option,com_wrapper/
Кстати, в robots.txt можно также ограничить (на всякий случай) доступ поисковиков к файлам Joomla:

Обязательно закрыть доступ для index2.php?, иначе могут возникнуть проблемы с Яшей. Как раз натолкнулся на эту проблему, и вообще внести в дистрибутив.
« Последнее редактирование: 28.01.2008, 17:52:32 от PaLyCH »

*

newleax

  • ****
  • 234
  • 23
Re: Оптимизация Joomla (черновик)
« Ответ #18 : 07.02.2008, 14:48:41 »
Спасибо. Так все четко
Еще даже толком не приступала, сделала только пункта два, а уже результат появился.

*

smart

  • *******
  • 6843
  • 1297
  • снова дома...
Re: Оптимизация Joomla (черновик)
« Ответ #19 : 07.02.2008, 20:55:12 »
Проблема в том, что
1) несколько css и js файлов могут загружаться прямо в шаблоне (есть такие шаблоны);
2) в добавок, некоторые мамботы дописывают к ним свои css и js;
3) ну, и наконец, компонент добавляет туда свои.
Так вот, задача состоит в том, чтобы попытаться уменьшить общее количество этих файлов.Нет. Можно, например, перенести все css-стили в template_css.css, а в мамботах и компонентах закомментировать добавление в хедер ссылок на свои файлы.
в принципе, я думаю можно в Joostina сделать это на уровне ядра - по крайней мере для тех случаев, когда скрипты и стили добавляются посредством функции addCustomHead - уже в ядре такие ситуации отлавливать, и автоматически создавать обобщенный файл со стилями или скриптами... мы эту тему буквально на днях обсуждали с boston'ом

А по поводу оптимизации графики, думаю стоит вот эту методику упомянуть: CSS Sprites и их использование. К примеру в JComments объединив иконки для кнопок BBCode в одну картинку, я в 2 раза выиграл по размеру, и вместо 9 файлов (а соответственно 9 запросов к серверу), получился 1...

А вообще, респект за материал, с удовольствием бы его потом разместил бы на Joomlapotal.ru! Причем на самом видном месте...
« Последнее редактирование: 07.02.2008, 21:00:11 от smart »

*

boston

  • *****
  • 499
  • 219
Re: Оптимизация Joomla (черновик)
« Ответ #20 : 08.02.2008, 18:27:26 »
В Joostina уже добавил быстрое добавление js скриптов в шапку, через $mainframe->addJS('путь-к-скрипту'); тоже самое еще с css сделаю. А если все однотипные файлы будут добавляться через одинаковые функции - то закэшировать их не проблема, примерно так сделано в Drupal'е ;)
Самая новая Joostina 1.3.0.5 UTF-8 stable | О найденных ошибках сообщаем | Расширения Joostina

Re: Оптимизация Joomla (черновик)
« Ответ #21 : 16.02.2008, 15:46:45 »
Disallow: /index2.php? - при данном запрете, ві запрещаете поисковикам транслировать новости из РСС....
Покрайней мере гугл меня сразу обматюкал.

*

Physicist

  • *****
  • 963
  • 185
  • Рябов Денис
Re: Оптимизация Joomla (черновик)
« Ответ #22 : 17.02.2008, 21:36:49 »
Disallow: /index2.php? - при данном запрете, ві запрещаете поисковикам транслировать новости из РСС....
Покрайней мере гугл меня сразу обматюкал.
Ну, тогда видимо нужно вручную прописать все имеющиеся компоненты:
Disallow: /index2.php?option=com_content
...

*

Sulpher

  • *******
  • 2131
  • 374
  • Шаблоны и расширения Joomla
Re: Оптимизация Joomla (черновик)
« Ответ #23 : 21.02.2008, 16:27:28 »
Physicist, Вы рекомендуете к установке PHP акселераторы. А как и куда его (акселератор) следует устанавливать? Можете в двух словах объяснить или привести ссылку, где почитать об этом?

*

Physicist

  • *****
  • 963
  • 185
  • Рябов Денис
Re: Оптимизация Joomla (черновик)
« Ответ #24 : 21.02.2008, 16:51:57 »
Они все устанавливаются как PHP-расширения (т.е. копируете соответствующие библиотеки в папку типа /usr/local/php/extensions и добавляете строку загрузки библиотеки в php.ini). Все ссылки на акселлераторы я привёл.
Кстати, вот темы по установке APC и eAccelerate в Денвере:
http://forum.dklab.ru/denwer/nursery/UstanavlivaemApc.html
http://forum.dklab.ru/denwer/packages/DenwerAndEaccelerator.html

*

Physicist

  • *****
  • 963
  • 185
  • Рябов Денис
Re: Оптимизация Joomla (черновик)
« Ответ #25 : 16.03.2008, 00:55:47 »
Спасибо за интересную статью.
Всегда пожалуйста. Жалко только, что сейчас у меня свободного времени нет, чтобы довести ее до ума и перевести на английский.

Кстати, вот тут был «разбор полетов» одного сайта, может будет интересно:
http://joomlaforum.ru/index.php?topic=29266

*

dreamwind

  • ***
  • 166
  • 14
Re: Оптимизация Joomla (черновик)
« Ответ #26 : 16.03.2008, 16:38:51 »
Полезный ресурс по уменьшению времени загрузки страниц на клиенте:
http://webo.in/

Есть анализ загрузки страницы, советы по оптимизации на русском, подробные мануалы и документация, также возможность визуальной оптимизации

*

Ctrelok

  • ***
  • 26
  • -2
Re: Оптимизация Joomla (черновик)
« Ответ #27 : 01.04.2008, 20:24:58 »
у меня маленький вопросик по поводу кэширования.
я поставил время 86400. однако в папке cache почему-то файлы только за последние 3 часа.

*

Physicist

  • *****
  • 963
  • 185
  • Рябов Денис
Re: Оптимизация Joomla (черновик)
« Ответ #28 : 03.04.2008, 01:15:47 »
Не знаю. Возможно, вы добавляли или изменяли новости — в этом случае кеш контента должен очиститься, но тогда модулей должен остаться...

*

Fill

  • ***
  • 39
  • 0
Re: Оптимизация Joomla (черновик)
« Ответ #29 : 04.04.2008, 01:24:25 »
Денис, спасибо за полезную информацию. Воспользовался советами 15 и 17. Стало повеселее. Для полного счастья подскажите, как проверить количество запросов к базе данных?
Социальная сеть для паломников: http://www.polomniki.ru