SlideShare a Scribd company logo
Повышаем
производительность
   Drupal-сайта




    Колос Владимир Анатольевич
Проблемы
производительности
Страница долго грузится:
   Нет должного кэширования данных
   Используются не оптимальные алгоритмы
   Выполняется куча непонятных SQL-запросов
   Долго загружаются модули
   Страницу долго отдаёт Web-сервер

Последствия:
   Сервер загружен на полную
   Посетитель закрыл вкладку с Вашим сайтом
   Ваш хостер отказал Вам в размещении сайта
Готовые решения


Список модулей:
  Boost
  Cache Router
  Authcache
  Block Cache Alter
  Path Cache
  Javascript Aggregator
  CSS Gzip
Готовые решения > Boost

Аудитория………..: анонимные пользователи
Цель……………….: кэширование страниц
Эффективность…: очень высокая
Возможности…….:
   Хранилище кэша: File
   Отдача закэшированной страницы происходит без участия
   PHP и MySQL
   Настраиваемое время жизни для каждой страницы
   Сжатие CSS и JavaScript
   Поддержка мультисайтов
   Модуль работает даже на недорогом хостинге
Готовые решения > Cache
Router
Аудитория………..: все
Цель………………: изменение хранилища по-умолчанию
Эффективность…: очень высокая
Возможности…….:
   Хранилище кэша: APC, XCache, eAccelerator, Memcache, File,
   Database
   Для разных таблиц кэша можно использовать различные
   хранилища
   Поддержка мультисайтов
Готовые решения > Authcache

Аудитория………..: все
Цель……………….: кэширование страниц
Эффективность…: очень высокая
Возможности…….:
   Хранилище кэша: любое из поддерживаемых модулей
   CacheRouter
   Кэширование настраивается по ролям пользователей
   Список исключений страниц из кэширования
   Загрузка динамических блоков на страницу происходит через
   Ajax
Готовые решения > Block Cache
Alter
Аудитория………..: все
Цель………………: кэширование блоков
Эффективность…: умеренная
Возможности…….:
   Настройки кэша: кэш отключён, глобальное кэширование,
   кэширование для страницы, кэширование для роли,
   кэширование для пользователя
   Синхронизация обновления кэша с: обновлением страницы,
   обновлением ноды, обновлением комментария, регистрацией
   нового пользователя, входом или выходом пользователя
   Время жизни кэша
Готовые решения > Path Cache

Аудитория………..: все
Цель……………….: кэширование преобразований пути
Эффективность…: умеренная
Возможности…….:
   Кэширование преобразований алиаса в системный путь
Готовые решения > Javascript
Aggregator
Аудитория………..: все
Цель……………….: сжатие JavaScript файлов
Эффективность…: умеренная
Возможности…….:
   Агрегация всех JavaScript файлов в один
   Минимизация JavaScript файла (Minify)
   Сжатие JavaScript файла используя GZip
Готовые решения > CSS Gzip

Аудитория………..: все
Цель……………….: сжатие CSS файлов
Эффективность…: умеренная
Возможности…….:
   Агрегация всех CSS файлов в один
   Сжатие CSS файла используя GZip
Советы при создании собственных
модулей
 Используйте Drupal Cache API
 Используйте статическое кэширование внутри собственных
 функций
 В функцию node_load передавайте только ID ноды в качестве
 первого аргумента
 Не используйте стиль отображения “Материал” в Views
 Используйте свою собственную функцию для получения
 значения одного или нескольких CCK-полей вместо загрузки
 всей ноды используя node_load()
 При массовой загрузке синонимов и связанных терминов
 таксономии используйте свою собственную функцию
Советы при создании собственных
модулей > Примеры

Drupal Cache API

Получение данных из кэша
cache_get($sid, $table = ‘cache’)

Добавление данных в кэш
cache_set($sid, $data, $table = ‘cache’, $expire = 0, $headers = null)

Очистка кэша
cache_clear_all($cid = NULL, $table = NULL, $wildcard = FALSE)
Советы при создании собственных
модулей > Примеры

Статическое кэширование внутри функций

function taxonomy_get_term($tid, $reset = FALSE) {
   static $terms = array();
   if ($reset) {
       $terms = array();
   }
   if (!isset($terms[$tid])) {
       // находим нужный термин используя SQL запрос
   }
   return $terms[$tid];
}
Советы при создании собственных
модулей > Примеры

В node_load передавайте только ID ноды

Статическое кэширование в функции работает
node_load(1);

Статическое кэширование в функции не работает
node_load(array(‘nid’ => 1));
node_load(array(‘nid’ => 1, ‘type’ => ‘page’));
Советы при создании собственных
модулей > Примеры

Массовая работа с терминами таксономии

Собственная функция выполнится быстрей с одним SQL запросом
$tids = array(1, 2, 3, 4, 5, …);
get_terms_relations($tids);

Чем цикл с родной функцией модуля taxonomy
$tids = array(1, 2, 3, 4, 5, …);
foreach ($tids as &$tid) {
    $tid = taxonomy_get_related($tid);
}
Спасибо за внимание

Ссылки
  Boost http://drupal.org/project/boost
  Cache Router http://drupal.org/project/cacherouter
  Authcache http://drupal.org/project/authcache
  Block Cache Alter http://drupal.org/project/blockcache_alter
  Path Cache http://drupal.org/project/pathcache
  Javascript Aggregator http://drupal.org/project/javascript_aggregator
  CSS Gzip http://drupal.org/project/css_gzip
  Полный список http://groups.drupal.org/node/21897

More Related Content

What's hot

Что нового в ASP.NET 4
Что нового в ASP.NET 4Что нового в ASP.NET 4
Что нового в ASP.NET 4
akrakovetsky
 
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
HOWWEDOIT
 
Web лекция 3 Web серверы
Web   лекция 3 Web серверыWeb   лекция 3 Web серверы
Web лекция 3 Web серверы
Technosphere1
 
Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Mikhail Davydov
 
JSTL
JSTLJSTL
Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Курсы по мобильной разработке под iOS. 5 лекция. Работа с даннымиКурсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Курсы по мобильной разработке под iOS. 5 лекция. Работа с даннымиГлеб Тарасов
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Ontico
 
Drupal 7 and History.js
Drupal 7 and History.jsDrupal 7 and History.js
Drupal 7 and History.js
Вадим Малай
 
«Композитный сайт. Ускорение отдачи сайта в 100 раз»
«Композитный сайт. Ускорение отдачи сайта в 100 раз» «Композитный сайт. Ускорение отдачи сайта в 100 раз»
«Композитный сайт. Ускорение отдачи сайта в 100 раз»
Гузель Рахимова
 
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Ontico
 
Drupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайтDrupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайтDrupalCamp Kyiv Рысь
 
Mysql vs postgresql
Mysql vs postgresqlMysql vs postgresql
Mysql vs postgresql
Daniel Podolsky
 
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish CacheУскоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
Igor Sazonov
 
09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки
Roman Brovko
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSP
Unguryan Vitaliy
 
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Yandex
 
Scaling services with apache mesos (and docker)
Scaling services with apache mesos (and docker)Scaling services with apache mesos (and docker)
Scaling services with apache mesos (and docker)
Ivan Kudryavtsev
 
JSP
JSPJSP
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Ontico
 

What's hot (20)

Что нового в ASP.NET 4
Что нового в ASP.NET 4Что нового в ASP.NET 4
Что нового в ASP.NET 4
 
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
 
Web лекция 3 Web серверы
Web   лекция 3 Web серверыWeb   лекция 3 Web серверы
Web лекция 3 Web серверы
 
Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)
 
JSTL
JSTLJSTL
JSTL
 
Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Курсы по мобильной разработке под iOS. 5 лекция. Работа с даннымиКурсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
 
Speed Up Your Website
Speed Up Your WebsiteSpeed Up Your Website
Speed Up Your Website
 
Drupal 7 and History.js
Drupal 7 and History.jsDrupal 7 and History.js
Drupal 7 and History.js
 
«Композитный сайт. Ускорение отдачи сайта в 100 раз»
«Композитный сайт. Ускорение отдачи сайта в 100 раз» «Композитный сайт. Ускорение отдачи сайта в 100 раз»
«Композитный сайт. Ускорение отдачи сайта в 100 раз»
 
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
 
Drupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайтDrupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайт
 
Mysql vs postgresql
Mysql vs postgresqlMysql vs postgresql
Mysql vs postgresql
 
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish CacheУскоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
 
09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSP
 
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
 
Scaling services with apache mesos (and docker)
Scaling services with apache mesos (and docker)Scaling services with apache mesos (and docker)
Scaling services with apache mesos (and docker)
 
JSP
JSPJSP
JSP
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
 

Similar to Повышаем производительность Drupal-сайта

Александр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated usersАлександр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated usersLEDC 2016
 
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...CodeFest
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NET
Vitaly Baum
 
Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureAlexander Feschenko
 
Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureAlexander Feschenko
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview Release
Denis Shestakov
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
Timur Shemsedinov
 
Работа со статикой в Django
Работа со статикой в DjangoРабота со статикой в Django
Работа со статикой в DjangoMoscowDjango
 
Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)
Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)
Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)
Symfoniacs
 
Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2
Ilyas Salikhov
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
Cache2012 administrationbasics
Cache2012 administrationbasicsCache2012 administrationbasics
Cache2012 administrationbasicsDenis Pavlov
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким ХалиловWebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
GeeksLab Odessa
 
How to optimize Magento
How to optimize MagentoHow to optimize Magento
How to optimize Magento
MageCloud
 
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...Lviv Startup Club
 
MODX 3: Что нового?
MODX 3: Что нового?MODX 3: Что нового?
MODX 3: Что нового?
Ivan Klimchuk
 
оптимизация скорости загрузки страницы
оптимизация скорости загрузки страницыоптимизация скорости загрузки страницы
оптимизация скорости загрузки страницы
Vladimir Romanitchev
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
Roman Dvornov
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2rit2011
 

Similar to Повышаем производительность Drupal-сайта (20)

Александр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated usersАлександр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated users
 
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NET
 
Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows Azure
 
Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows Azure
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview Release
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
Работа со статикой в Django
Работа со статикой в DjangoРабота со статикой в Django
Работа со статикой в Django
 
Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)
Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)
Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)
 
Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
Cache2012 administrationbasics
Cache2012 administrationbasicsCache2012 administrationbasics
Cache2012 administrationbasics
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким ХалиловWebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
 
How to optimize Magento
How to optimize MagentoHow to optimize Magento
How to optimize Magento
 
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
 
MODX 3: Что нового?
MODX 3: Что нового?MODX 3: Что нового?
MODX 3: Что нового?
 
оптимизация скорости загрузки страницы
оптимизация скорости загрузки страницыоптимизация скорости загрузки страницы
оптимизация скорости загрузки страницы
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
 

Повышаем производительность Drupal-сайта

  • 1. Повышаем производительность Drupal-сайта Колос Владимир Анатольевич
  • 2. Проблемы производительности Страница долго грузится: Нет должного кэширования данных Используются не оптимальные алгоритмы Выполняется куча непонятных SQL-запросов Долго загружаются модули Страницу долго отдаёт Web-сервер Последствия: Сервер загружен на полную Посетитель закрыл вкладку с Вашим сайтом Ваш хостер отказал Вам в размещении сайта
  • 3. Готовые решения Список модулей: Boost Cache Router Authcache Block Cache Alter Path Cache Javascript Aggregator CSS Gzip
  • 4. Готовые решения > Boost Аудитория………..: анонимные пользователи Цель……………….: кэширование страниц Эффективность…: очень высокая Возможности…….: Хранилище кэша: File Отдача закэшированной страницы происходит без участия PHP и MySQL Настраиваемое время жизни для каждой страницы Сжатие CSS и JavaScript Поддержка мультисайтов Модуль работает даже на недорогом хостинге
  • 5. Готовые решения > Cache Router Аудитория………..: все Цель………………: изменение хранилища по-умолчанию Эффективность…: очень высокая Возможности…….: Хранилище кэша: APC, XCache, eAccelerator, Memcache, File, Database Для разных таблиц кэша можно использовать различные хранилища Поддержка мультисайтов
  • 6. Готовые решения > Authcache Аудитория………..: все Цель……………….: кэширование страниц Эффективность…: очень высокая Возможности…….: Хранилище кэша: любое из поддерживаемых модулей CacheRouter Кэширование настраивается по ролям пользователей Список исключений страниц из кэширования Загрузка динамических блоков на страницу происходит через Ajax
  • 7. Готовые решения > Block Cache Alter Аудитория………..: все Цель………………: кэширование блоков Эффективность…: умеренная Возможности…….: Настройки кэша: кэш отключён, глобальное кэширование, кэширование для страницы, кэширование для роли, кэширование для пользователя Синхронизация обновления кэша с: обновлением страницы, обновлением ноды, обновлением комментария, регистрацией нового пользователя, входом или выходом пользователя Время жизни кэша
  • 8. Готовые решения > Path Cache Аудитория………..: все Цель……………….: кэширование преобразований пути Эффективность…: умеренная Возможности…….: Кэширование преобразований алиаса в системный путь
  • 9. Готовые решения > Javascript Aggregator Аудитория………..: все Цель……………….: сжатие JavaScript файлов Эффективность…: умеренная Возможности…….: Агрегация всех JavaScript файлов в один Минимизация JavaScript файла (Minify) Сжатие JavaScript файла используя GZip
  • 10. Готовые решения > CSS Gzip Аудитория………..: все Цель……………….: сжатие CSS файлов Эффективность…: умеренная Возможности…….: Агрегация всех CSS файлов в один Сжатие CSS файла используя GZip
  • 11. Советы при создании собственных модулей Используйте Drupal Cache API Используйте статическое кэширование внутри собственных функций В функцию node_load передавайте только ID ноды в качестве первого аргумента Не используйте стиль отображения “Материал” в Views Используйте свою собственную функцию для получения значения одного или нескольких CCK-полей вместо загрузки всей ноды используя node_load() При массовой загрузке синонимов и связанных терминов таксономии используйте свою собственную функцию
  • 12. Советы при создании собственных модулей > Примеры Drupal Cache API Получение данных из кэша cache_get($sid, $table = ‘cache’) Добавление данных в кэш cache_set($sid, $data, $table = ‘cache’, $expire = 0, $headers = null) Очистка кэша cache_clear_all($cid = NULL, $table = NULL, $wildcard = FALSE)
  • 13. Советы при создании собственных модулей > Примеры Статическое кэширование внутри функций function taxonomy_get_term($tid, $reset = FALSE) { static $terms = array(); if ($reset) { $terms = array(); } if (!isset($terms[$tid])) { // находим нужный термин используя SQL запрос } return $terms[$tid]; }
  • 14. Советы при создании собственных модулей > Примеры В node_load передавайте только ID ноды Статическое кэширование в функции работает node_load(1); Статическое кэширование в функции не работает node_load(array(‘nid’ => 1)); node_load(array(‘nid’ => 1, ‘type’ => ‘page’));
  • 15. Советы при создании собственных модулей > Примеры Массовая работа с терминами таксономии Собственная функция выполнится быстрей с одним SQL запросом $tids = array(1, 2, 3, 4, 5, …); get_terms_relations($tids); Чем цикл с родной функцией модуля taxonomy $tids = array(1, 2, 3, 4, 5, …); foreach ($tids as &$tid) { $tid = taxonomy_get_related($tid); }
  • 16. Спасибо за внимание Ссылки Boost http://drupal.org/project/boost Cache Router http://drupal.org/project/cacherouter Authcache http://drupal.org/project/authcache Block Cache Alter http://drupal.org/project/blockcache_alter Path Cache http://drupal.org/project/pathcache Javascript Aggregator http://drupal.org/project/javascript_aggregator CSS Gzip http://drupal.org/project/css_gzip Полный список http://groups.drupal.org/node/21897