1 / 46

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

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

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Easy authcache 2 - кеширование для Pro Игорь Родионов Drupal expert rodionov.ig@gmail.com

  2. Родионов Игорь Cooking Drupal ~ 5 years ~ 14 projects ~ 60 patches ~16 approved

  3. Drupal

  4. Drupal

  5. Преждевременная оптимизация

  6. Drupal

  7. Кеширование

  8. Кеширование

  9. Кеширование

  10. Кеширование • Система разделения контента • Система доставки “динамического” контента • Кеширующий прокси

  11. Система разделения контента /** * 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; }

  12. Система разделения контента 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; }

  13. Система разделения контента /** * 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; }

  14. Система разделения контента 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; }

  15. Система разделения контента /** * 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; }

  16. Система доставки контента • 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

  17. Клуб анонимных друпалеров “А можем мы обновить ядро?”

  18. Клуб анонимных друпалеров

  19. Клуб анонимных друпалеров

  20. Клуб анонимных друпалеров Возми проект под контроль!

  21. Непрерывная интеграция • Избавится от рутины • Регрессионное тестирование • Быстрая обратная связь • Уверенность в проекте • Часты релизы

  22. Непрерывная интеграция

  23. Deploy

  24. Deploy

  25. Инспекция

  26. Инспекция – Copy - Paste PHPCPD pear install phpunit/phpcpd

  27. Инспекция - Mess phplint icosaedro.it/phplint

  28. Инспекция - Mess PHPMD phpmd.org ______________________________ Code Size Rules Design Rules Naming Rules Unused Code Rules

  29. Инспекция – Code Style Code Sniffer pear install PHP_CodeSniffer Drupal Code Sniffer drupal.org/project/drupalcs

  30. Тестирование

  31. Тестирование Selenium + Unit testing framework + Functional тестирование - Unit тестирование + Поддержка Java Script - Доступ к API Drupal - Атомарность тестов - Хрупкость тестов - Запуск тестов паралельно - Производительность тестов

  32. Тестирование Simpletest/Simpletest clone + Functional тестирование + Unit тестирование - Поддержка Java Script + Доступ к API Drupal +Атомарность тестов +Хрупкость тестов +Запуск тестов паралельно +Производительность тестов

  33. Тестирование Simpletest/Simpletest clone/Selenium + Functional тестирование + Unit тестирование + Поддержка Java Script + Доступ к API Drupal +Атомарность тестов +Хрупкость тестов +Запуск тестов паралельно +Производительность тестов

  34. Сборка

  35. Сборка

  36. Сборка • Contribute • Custom • Forked

  37. Сборка • Contribute • Custom • Forked Patches

  38. Сборка Drush make projects[admin_menu][version] = "3.0-rc1" projects[admin_menu][subdir] = "contrib/dev" projects[admin_menu][patch][] = "patches/admin_menu_font.patch"

  39. Непрерывная интеграция • Избавится от рутины • Регрессионное тестирование • Быстрая обратная связь • Уверенность в проекте • Часты релизы

  40. Сборка • Drush make • Корпоративные репозитории модулей • Хакайте ядро и модули • Возвращайте патчи в сообщество

  41. Сборка Не храните

  42. Сборка

  43. Сборка - phing • $ phing make • $ phing install • $ phing update • $ phing test • $ phing inspect • $ phing create • $ phing phpcs etc ...

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

  45. Спасибо - друзьям Родионову Алексею Мироненко Максиму Тищенко Максиму Королькову Александру

  46. Спасибо за вниманиеВопросы? Игорь Родионов Drupal expert rodionov.ig@gmail.com

More Related