easy authcache 2 кеширование для pro родионов игорь
TRANSCRIPT
Спонсоры
Генеральный спонсор
Серебряный спонсор Серебряный спонсор
Бронзовый спонсор Бронзовый спонсор
Организатор
Родионов Игорь
Cooking Drupal
~ 5 years~ 14 projects~ 60 patches
~16 approved
Drupal
Drupal
Преждевременная оптимизация
Drupal
Кеширование
Кеширование
Кеширование
Кеширование
• Система разделения контента• Система доставки
“динамического” контента• Кеширующий прокси
Система разделения контента
/**
* Implements hook_easy_authcache_register()
*/
function easy_authcache_block_easy_authcache_register() {
$items[] = array(
'theme' => 'block',
'mock callback' => 'easy_authcache_block_dynamic_args',
'callback' => 'easy_authcache_block_callback'
);
return $items;
}
Система разделения контента
function easy_authcache_block_dynamic_args(&$vars) {
$module = $vars['block']->module;
$delta = $vars['block']->module;
$conf = _easy_authcache_block_settings($module, $delta);
if ($conf['is_dynamic']) {
$block_id = _easy_authcache_block_id($module, $delta);
$params = array('region' => $vars['block']->region, 'block_id' => $block_id);
return array('id' => $block_id, 'params' => $params);
}
return null;
}
Система разделения контента
/**
* Implements hook_easy_authcache_register()
*/
function easy_authcache_block_easy_authcache_register() {
$items[] = array(
'theme' => 'block',
'mock callback' => 'easy_authcache_block_dynamic_args',
'callback' => 'easy_authcache_block_callback'
);
return $items;
}
Система разделения контента
function easy_authcache_block_callback($data) {
if (empty($data)) {
return '';
}
$block_id = $data['block_id'];
......... COPY PASTE FROM DRUPAL CORE BLOCK MODULE..........
// Process each block
$block->region = $data['region'];
......... COPY PASTE FROM DRUPAL CORE BLOCK MODULE..........
$output = theme('block', $block);
return $output;
}
Система разделения контента
/**
* Implements hook_easy_authcache_register()
*/
function easy_authcache_block_easy_authcache_register() {
$items[] = array(
'theme' => 'block',
'mock callback' => 'easy_authcache_block_dynamic_args',
'callback' => 'easy_authcache_block_callback'
);
return $items;
}
Система доставки контента
• ESI – Edge side includes– CDN (Akamai)– Caching proxy (Varnish,Squid,Mongrel)
• SSI – Server side includes– Web server (Apache, nginx, lighttpd, IIS)
• Ajax – Client side include– Web browsers with JavaScript support
Клуб анонимных друпалеров
“А можем мы обновить ядро?”
Клуб анонимных друпалеров
Клуб анонимных друпалеров
Клуб анонимных друпалеров
Возми проект под контроль!
Непрерывная интеграция
• Избавится от рутины• Регрессионное тестирование• Быстрая обратная связь• Уверенность в проекте• Часты релизы
Непрерывная интеграция
Deploy
Deploy
Code Run
SVNGITCVS MercurialFTPSFTP
Bash ManualBash SSHVCS Hooks CronCapistrano Phingistrano
Инспекция
Инспекция – Copy - Paste
PHPCPD
pear install phpunit/phpcpd
Инспекция - Mess
phplint
icosaedro.it/phplint
Инспекция - Mess
PHPMDphpmd.org
______________________________
Code Size Rules
Design Rules
Naming Rules
Unused Code Rules
Инспекция – Code Style
Code Sniffer
pear install PHP_CodeSniffer
Drupal Code Sniffer
drupal.org/project/drupalcs
Тестирование
Тестирование
Selenium + Unit testing framework
+ Functional тестирование
- Unit тестирование
+ Поддержка Java Script
- Доступ к API Drupal
- Атомарность тестов
- Хрупкость тестов
- Запуск тестов паралельно
- Производительность тестов
Тестирование
Simpletest/Simpletest clone
+ Functional тестирование
+ Unit тестирование
- Поддержка Java Script
+ Доступ к API Drupal
+ Атомарность тестов
+ Хрупкость тестов
+ Запуск тестов паралельно
+ Производительность тестов
Тестирование
Simpletest/Simpletest clone/Selenium
+ Functional тестирование
+ Unit тестирование
+ Поддержка Java Script
+ Доступ к API Drupal
+ Атомарность тестов
+ Хрупкость тестов
+ Запуск тестов паралельно
+ Производительность тестов
Сборка
Сборка
Сборка
•Contribute•Custom•Forked
Сборка
•Contribute•Custom•Forked Patches
Сборка
Drush make
projects[admin_menu][version] = "3.0-rc1"
projects[admin_menu][subdir] = "contrib/dev"
projects[admin_menu][patch][] = "patches/admin_menu_font.patch"
Непрерывная интеграция
• Избавится от рутины• Регрессионное тестирование• Быстрая обратная связь• Уверенность в проекте• Часты релизы
Сборка
• Drush make
• Корпоративные репозитории модулей
• Хакайте ядро и модули
• Возвращайте патчи в сообщество
Сборка
Не храните
Сборка
Модули Drush migrate
CущностиFeaturesCtools
default hooks
НастройкиStrongarm
CtoolsFeatures
КонтентUuid
Uuid featuresFeatures
Сборка - phing
• $ phing make• $ phing install• $ phing update• $ phing test• $ phing inspect• $ phing create• $ phing phpcsetc ...
Итого
• Контроль над проектом• Уменьшили время релиза• Уменьшили риски• Накопление “технического опыта”• Гибкость интеграции стороннего кода• 75% разработчиков счастливы
Спасибо - друзьям
Родионову Алексею Мироненко Максиму
Тищенко МаксимуКоролькову Александру
Спонсоры
Генеральный спонсор
Серебряный спонсор Серебряный спонсор
Бронзовый спонсор Бронзовый спонсор
Организатор