Оптимизация Drupal с помощью модулей. Разгоняем Drupal. Практическое приложение. Оптимизация структуры веб-страниц
Встроенная оптимизация Drupal
Оптимизация Drupal с помощью модулей
Оптимизация конфигурации и обслуживания Drupal
Оптимизация сервера
Заключение
1. Установим модуль Authenticated User Page Caching (Authcache), скачать его можно по Интернет-адресу - http://drupal.org/project/authcache. Данный модуль позволяет кэшировать страницы, как для анонимных пользователей, так и для аутентифицированных («залогинившихся») пользователей более качественно, чем встроенное кэширование Drupal. При установке данного модуля, необходимо перенастроить динамический контент на страницах (например: вывод имени аутентифицированного пользователя).
Authcache сохраняет сжатый кэш страниц отдельно для каждого пользователя или роли. Кэш сохраняется в базе данных или в стороннем средстве кэширования (memcahed, APC, и т.д.).
Кэшированные версии страниц для аутентифицированных пользователей (кроме супер-пользователя) передаются с помощью AJAX, поэтому достигается очень быстрое отображение страницы в браузере. Если у аутентифицированного пользователя в браузере отключены JavaScript, то он получает страницы не из кэша. На некоторых серверах скорость загрузки страницы уменьшается до 1 миллисекунды.
Для установки модуля:
скачаем его;
распакуем модуль в папку /sites/all/modules;
скопируем файл ajax_authcache.php из папки модуля в корневую директорию сайта (там же находится файл index.php);
откроем файл settings.php (в папке /sites/default) и добавим следующий код (без примечаний за // ...) в начало файла после тега $conf['cache_inc'] = './sites/all/modules/authcache/api/authcache.inc'; $conf['authcache'] = array( 'default' => array(
// технология кэширования - apc, memcache, db, file, eacc or xcache 'engine' => 'db',
// если используем memcached (host:port, например, 'localhost:11211') 'server' => array(),
// если используем процесс memcached, shared или single
'shared' => TRUE,
// кэш ключа префикса (для нескольких сайтов) 'prefix' => '',
// если используем кэширование на файлах - указываем путь их
// сохранения 'path' => 'files/filecache',
// статический массив кэша (расширенный) 'static' => FALSE, ), );
В данном коде устанавливаются настройки модуля Authcache. Указываем, что будем хранить кэш страниц в базе данных ('engine' => 'db'), поэтому все остальные установки не имеют значения, оставляем их без изменений. Более подробно о параметрах данного кода можно прочитать на странице - http://drupal.org/project/cacherouter (на английском языке).
Включим модуль Authcache на странице: Управление -> Модули (http://www.example.ru/admin/build/modules). После чего настроим его работу на странице: Управление -> Производительность -> Authcache (http://www.example.ru/admin/settings/performance/authcache):
укажем роли, для которых необходимо кэшировать контент;
аннулируем все пользовательские сессии (переключатель - Invalidate all user sessions) при первом запуске;
выставив время хранения кэша (в часах);
нажмём кнопку сохранить и очистить кэш (Save & clear cached pages), для сохранения изменений.
Рис. 8.3. Настройка модуля Authcache.
Изменим настройки элементов на страницах сайта, так чтобы страница для разных пользователей, принадлежащих одной роли, выглядела одинаково (т.е. например: запретим пользователям управлять видимостью блоков на сайте, если такие блоки существуют).
В шаблонах тем оформления используем переменные:
$user_name - для отображения имени аутентифицированного пользователя;
$user_link - для отображения ссылок связанных с профилем пользователя;
$is_page_authcache - если установлен в TRUE то все хуки данного шаблона темы оформления будут сохранены в кэш.
Можно так же ознакомится с примером - /sites/all/modules/authcache/modules/authcache_example, который показывает, как настроить блоки с пользовательским содержанием (с контентом пользователя).
2. Если необходимо кэшировать страницы только для анонимных пользователей (без аутентифицированных), можно установить модуль Cache Router. Данный модуль лежит в основе модуля Authcache и кэширует страницы лучше встроенного кэширования Drupal. Скачаем модуль по Интернет адресу - http://drupal.org/project/authcache. После скачивания распакуем модуль в папку /sites/all/modules. Включим модуль Cache Router на странице: Управление -> Модули (http://www.example.ru/admin/build/modules). Откроем файл settings.php (в папке /sites/default) и добавим следующий код в начало файла перед тегом $conf['cache_inc'] = './sites/all/modules/cacherouter/cacherouter.inc'; $conf['cacherouter'] = array( 'default' => array( 'engine' => 'db', 'server' => array(), 'shared' => TRUE, 'prefix' => '', 'path' => 'sites/default/files/filecache', 'static' => FALSE, 'fast_cache' => TRUE, ), );
После осуществления действий приведенных выше, страницы создаваемого сайта будут отдаваться сервером браузеру пользователя в сжатом виде, а вот CSS и JavaScript нет. Исправим это:
cкачаем модуль CSS Gzip со страницы - http://drupal.org/project/css_gzip;
cкачаем модуль JavaScript Aggregator со страницы - http://drupal.org/project/javascript_aggregator;
распакуем модули в папку /sites/all/modules;
включим модули на странице: Управление -> Модули (http://www.example.ru/admin/build/modules);
активируем сжатие CSS и JavaScript на странице: Управление -> Производительность (http://www.example.ru/admin/settings/performance), отметив чекбоксы «GZip CSS» и «GZip JavaScript»;
внесём изменение в файл .htaccess расположенный в корневой директории сайта (на основании данных из README.txt входящего в состав модуля CSS Gzip), пропишем меду тегами и следующий код:
### START CSS GZIP ###
# Requires mod_mime to be enabled.
# Send any files ending in .gz with x-gzip encoding in the header.
AddEncoding x-gzip .gz
# Gzip compressed css files are of the type 'text/css'.
ForceType text/css
RewriteEngine on
# Serve gzip compressed css files
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.css $1\.css\.gz [L,QSA,T=text/css]
### End CSS GZIP ###
сохраним настройки и очистим кэш.
Если в шаблонах темы оформления необходимо использовать дополнительные CSS и JavaScript, то желательно подключать их с помощью команд:
drupal_add_css('путь к CSS относительно корневой директории сайта');
drupal_add_js('путь к JavaScript относительно корневой директории сайта');
для того, чтобы они оптимизировались (включались в один исходный CSS или JavaScript-файл) и сжимались совместно со всеми остальными CSS или JavaScript-файлами, используемыми на сайте.