• CMS Made Simple - Русская поддержка
Языки: CMS Made Simple - Official website CMS made Simple Czech Site Zur deutschsprachigen Supportseite CMS Made Simple - Danmark Sitio en Castellano Site francophone CMS Made Simple - Magyarország Benvenuto su CMSmadesimple CMSMS -  русский CMS Made Simple - slovenská verzia

Оптимизация скорости работы

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

Если у Вас стандартная установка, то в html коде каждой сгенерированной системой страницы Вы найдете комментарий в такой форме:

<!-- Generated in 0,115151 seconds by CMS Made Simple using 17 SQL queries -->
<!-- CMS Made Simple - Released under the GPL - http://cmsmadesimple.org -->

Если Вы дополнительно хотите узнать, сколько памяти требуется системе для воспроизведения страницы, то откройте файл index.php и найдите строчку в конце файла, которая начинается с "echo "<!-- Generated in" и измените ее на:

echo "<!-- Generated in ".microtime_diff($starttime,$endtime)." seconds by CMS Made Simple using " .(isset($db->query_count)?$db->query_count:'')." SQL queries and " .(function_exists('memory_get_usage')?memory_get_usage():'n/a')." bytes of memory -->\n";

Теперь у Вас есть отправные цифры для начала оптимизации.

1. Постоянные соединения с MySQL

Постоянные соединения представляют собой связи с базами данных, которые не закрываются при завершении скрипта. При получении запроса на постоянное соединение PHP вначале проверяет, имеется ли идентичное постоянное соединение (которое было открыто при предыдущих обращениях) и, если таковое было найдено, использует его. В случае, если идентичного соединения нет, PHP создает новое. Под "идентичным" подразумевается соединение, открытое на тот же хост с таким же именем пользователя и паролем (если они указаны).

Постоянные соединения полезны в том случае, если при открытии большого количества SQL-соединений возникает ощутимая нагрузка на сервер. Вы должн убедиться, что постоянное соединение допускается в настройках Вашего сервера, если это так, то откройте файл config.php и замените параметр:

$config['persistent_db_conn'] = true;

Подробней о постоянных соединениях Вы можете прочитать в документации php.

2. Кэширование контента

Обычно кэширование контента дает преимущества в работе страницы. Но кэширование на стороне сервера может также привести к дополнительной нагрузке на сервер, особенно если в системе одновременно работают несколько редакторов и контент постоянно обновляется. Для того, чтобы отключить эту функцию откройте файл class.contentoperations.php в каталоге /lib/classes и измените параметр:

$usecache = false;

Читайте дополнительную информацию о методах и принципах кэширования.

3. Сжатие web-страниц

Алгоритмов сжатия при работе с обычными текстовыми файлами позволяет уменьшать их размеры на 70 или больше процентов, в зависимости от содержания файла и таким образом способствует сбережению ресурсов процессора. Если Ваш провайдер поддерживает zip, то Вы просто обязаны использовать функции сжатия для увелечения эффективности работы сервера. Как узнать, поддерживает ли броузер сжатие? Если переменная окружения http_accept_encoding содержит "gzip" или "x-gzip", значит поддерживает. Узнать об этом в php можно проверив переменную $http_server_vars['http_accept_encoding'] на вхождение "gzip";

Проверьте также переменную zlib.output_compression для выбора правильной строчки кода. Для настройки сжатия откройте файл index.php и найдите строчку @ob_start(); Измените эту строчку в зависимости от настройки Вашего сервера:

ob_start("ob_gzhandler"); // если zlib.output_compression включено
ob_start("gzhandler"); // если zlib.output_compession отключено

Сжатие снижает количество передаваемых байт и одновременно увеличивает производительность. Для получения дополнительной информации Вы можете прочитать статью о сжатии веб-контента.

Если Вы хотите использовать сжатие также и для административного интерфейса, то проведите такое же изменение в файле admin/header.php. Внимание! Если Вы используете визуальный редактор TinyMCE, то Вам нужно сначала выключить сжатие в этом редактере для исбежания возможных конфликтов.

4. Компилирование шаблонов Smarty

Не использовать в версиях 1.4.x!!!

Одна из уникальных возможностей Smarty - компилирование шаблонов. Это означает, что Smarty читает файлы шаблонов и создаёт PHP-код на их основе. Код создаётся один раз и потом только выполняется. Поэтому нет необходимости обрабатывать файл шаблона для каждого запроса.

В рабочей среде шаблоны меняются как правило очень редко, поэтому Вы можете отключить функцию проверки компилирования шаблонов. Откройте файл index.php и поменяйте параметр:

$smarty->compile_check = false;

Внимание! Если после отключения этой функции Вы измените шаблоны, то эти изменения не будут видны до тех пор, пока Вы не очистите кэш (Администрирование сайта -> Общие свойства -> Очистить кэш)

5. Кэширование SQL

CMS Made Simple использует для запросов к базе данных абстрактный класс ADODB. Этот класс поддерживает кэширование SQL. В случае кэширования того или иного запроса идет обращение в папку с кэшем, и сперва ищется результат идентичного запроса, который сохранён в виде простого текстового файла с именем типа /двухсимвольноеимяпапки/adodb_уникальный_ключ.cache. Если таковой существует - результат для запроса берется из этого файла, а не из базы. Если же такой файл не существует - идет стандартный запрос в базу данных, и его результаты записываются в такой файл (в этот самый кэш).

По умолчанию функция кэширования запросов отключена, но Вы можете сами активировать ее. Откройте файл adodb.functions.php в каталоге lib и найдите строчку:

$dbinstance =& ADONewConnection($config['dbms'], 'pear:date:extend:transaction');

Добавьте новую строку после найденной:

$dbinstance->clientflags = MYSQL_CLIENT_COMPRESS;

6. Изменение основного кода

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

После проведения оптимизации не ожидайте чуда, но работа сервера должна ускориться.

comments powered by Disqus