1000 миллисекунд из жизни magento

23

Upload: magecom-ukraine

Post on 22-May-2015

3.449 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1000 миллисекунд из жизни Magento
Page 2: 1000 миллисекунд из жизни Magento

1000 миллисекунд из жизни Magento

Евгений Ивашин,разработчик Magento Core

Page 3: 1000 миллисекунд из жизни Magento

Представьте себя на месте Magento• Представьте себе что вас зовут Magento, вы весите

около 60 мегабайт и состоите из более чем 320 тысяч строк кода.

Page 4: 1000 миллисекунд из жизни Magento

Представьте себя на месте Magento• Представьте, что одни ваши знакомые хотят, чтобы вы

весили меньше, другие – чтобы вы бегали как спринтер, третьи – чтобы вы были способны сделать сальто и встать на мостик без усилий.

Page 5: 1000 миллисекунд из жизни Magento

Представьте себя на месте Magento• Представьте, что окружающие никогда не довольны

вашими успехами, нагружают вас дополнительными упражнениями и в то же время не прекращают требовать от вас быть еще гибче и еще быстрее.

Page 6: 1000 миллисекунд из жизни Magento

Представьте себя на месте Magento

Представили? А теперь представьте, что вы должны быть готовы:

• обслуживать тысячи клиентов в час

• никому не отказывать в помощи

• никого не заставлять ждать

Page 7: 1000 миллисекунд из жизни Magento

Тук-тук (0.000 ms)Пользователь набрал в браузере

http://my.magento.installation.com/customer/account/login

Веб-сервер все запросы переадресовывает на index.php

Page 8: 1000 миллисекунд из жизни Magento

Запуск основного цикла Magento (0.005 ms)Пользователь набрал в браузере

http://my.magento.installation.com/customer/account/login

Веб-сервер все запросы переадресовывает на index.php

Mage::run()

Page 9: 1000 миллисекунд из жизни Magento

Экскурсия по фабрике

::getModel()

::getSingleton() ::app()

::getBaseUrl() ::getConfig() ::register()

::getStoreConfig()

::helper()

::registry()

::getResourceModel()

::getBaseDir()

::getUrl()

Page 10: 1000 миллисекунд из жизни Magento

Инициализация приложения (0.020 ms)Пользователь набрал в браузере

http://my.magento.installation.com/customer/account/login

Веб-сервер все запросы переадресовывает на index.php

Mage::run()

Инициализация класса приложения Mage_Core_Model_App

Page 11: 1000 миллисекунд из жизни Magento

Запуск основного цикла приложения (0.038 ms)

Mage::run()

Инициализация класса приложения Mage_Core_Model_App

...

Запускается основной цикл приложения Mage::app()->run()

Page 12: 1000 миллисекунд из жизни Magento

Загрузка базовой конфигурации (0.123 ms)

Mage::run()

Инициализация класса приложения Mage_Core_Model_App

...

Запускается основной цикл приложения Mage::app()->run()

Загрузка базовой конфигурации из app/etc

Page 13: 1000 миллисекунд из жизни Magento

Загрузка базовой конфигурации

System Configuration

app/etc/*.xml

1

Page 14: 1000 миллисекунд из жизни Magento

Инициализация модулей (0.175 ms)

Инициализация класса приложения Mage_Core_Model_App

...

Запускается основной цикл приложения Mage::app()->run()

Загрузка базовой конфигурации из app/etc

Инициализация каждого модуля из app/etc/modules

Module 1 Module 2 Module 3 Module N ...

Page 15: 1000 миллисекунд из жизни Magento

Инициализация модулей

System Configuration

app/etc/*.xml

1

app/etc/modules/*.xml

2

app/<Module 1 path>/etc/*.xml

3

app/<Module 2 path>/etc/*.xml

4

app/<Module N path>/etc/*.xml

N app/etc/local.xml

N+1…

Page 16: 1000 миллисекунд из жизни Magento

Запуск цикла диспетчеризации (0.591 ms)

Запускается основной цикл приложения Mage::app()->run()

...

Загрузка базовой конфигурации из app/etc

Инциализация Front Controller и запуск его цикла диспетчеризации

Инициализация каждого модуля из app/etc/modules

Module 1 Module 2 Module 3 Module N ...

Page 17: 1000 миллисекунд из жизни Magento

Попытка сопоставить роутер с URL (0.613 ms)

Перебор всех сконфигурированных роутеров

...

Инциализация Front Controller и запуск его цикла диспетчеризации

Инициализация каждого модуля из app/etc/modules

Module 1 Module 2 Module 3 Module N ...

Router 1 Router 2 Router 3 Router N ...

Page 18: 1000 миллисекунд из жизни Magento

Вычисление и запуск action (0.620 ms)

Перебор всех сконфигурированных роутеров

...Инциализация Front Controller и запуск его цикла диспетчеризации

Вычисление Action Controller и Action, запуск $actionController->actionAction()

Router 1 Router 2 Router 3 Router N ...

Page 19: 1000 миллисекунд из жизни Magento

Анатомия контроллера

Загрузка Layout$this->loadLayout();

Обработка входных параметров из Request

Работа с отдельными блоками в Layout

Отрисовка Layout$this->renderLayout();

Page 20: 1000 миллисекунд из жизни Magento

Обновления Layout

Page 21: 1000 миллисекунд из жизни Magento

Генерация блоков

Page 22: 1000 миллисекунд из жизни Magento

Рендеринг (~1.000 ms)

Page 23: 1000 миллисекунд из жизни Magento

The

End