Easy authcache 2 - кеширование для Pro

Post on 03-Jan-2016

29 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Easy authcache 2 - кеширование для Pro. Игорь Родионов. Drupal expert rodionov.ig@gmail.com. Родионов Игорь. Cooking Drupal ~ 5 years ~ 14 projects ~ 60 patches ~16 approved. Drupal. Drupal. Преждевременная оптимизация. Drupal. Кеширование. Кеширование. Кеширование. Кеширование. - PowerPoint PPT Presentation

Transcript

Easy authcache 2 - кеширование для Pro

Drupal expert

rodionov.ig@gmail.com

Игорь Родионов

Родионов Игорь

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ущностиFeatures

Ctoolsdefault hooks

НастройкиStrongarm

CtoolsFeatures

КонтентUuid

Uuid featuresFeatures

Сборка - phing

• $ phing make

• $ phing install

• $ phing update

• $ phing test

• $ phing inspect

• $ phing create

• $ phing phpcsetc ...

Итого

• Контроль над проектом• Уменьшили время релиза• Уменьшили риски• Накопление “технического опыта”• Гибкость интеграции стороннего кода• 75% разработчиков счастливы

Спасибо - друзьям

Родионову Алексею Мироненко Максиму

Тищенко МаксимуКоролькову Александру

Спасибо за внимание

Вопросы?

Drupal expert

rodionov.ig@gmail.com

Игорь Родионов

top related