Статьи
Портфолио
Друзья
Контакты

Последние статьи

06.07.2010 Memcache и Zend: у Вас "падает" Memcache? 4 коммент.

06.07.2010 Collabtive - web-based project management software 2 коммент.

03.06.2010 Ускоряем ZF-проекты: автолоад и сборка в один файл 2 коммент.

Все

Категории

PHP 2 стат.

Zend Framework 25 стат.

Javascript 3 стат.

Другое 12 стат.

Книги 1 стат.

Украина 1 стат.

Все

RSS

Статьи

Комментарии

Портфолио

Облако тегов

программирование  Программы  портфолио  php  zend framework  Zend_Db  Smarty  Zend_Form  паттерны  javascript  niceforms  jQuery  Zend_Mail  веб  Google  Zend_Rest  Zend_View_Helper  zend casts  Zend_View  Zend_Layout  speedUp  интернет  Загрузчик фотографий  Flash  ВКонтакте  zend  localization  zend_translate  gettext  антон шевчук  подарки  Я читаю  Книги  sphinx  релизы 

Все

Реклама



Статистика



Rambler's Top100

Главная > Статьи > Zend Framework > Ускоряем Zend_View!
02.06.09 Ускоряем Zend_View!

Ускорение Zend_ViewПрограммируя все более крупные и сложные информационные системы, я осмыслил очень большую важность производительности подобных систем, ведь от этого в немалом объеме зависит успех проекта.

Так вот, стабильность, скорость и надежность. По этому поводу я и решил написать небольшую заметку на тему ускорения Zend_View. Информация взята из мануала Zend Framework – решил ее продублировать и более подробно объяснить, так как мало кто обращает внимание на эту информацию.

 

К делу


 

Для ускорения вида Вашего приложения, построенного на основе Zend Framework необходимо в Вашем бутстрапе создать функцию, которая будет использовать кеш подключаемых файлов PluginLoader'а. 

Zend_View построен таким образом, что подключение его помощников и других программных компонентов – задача очень ресурсоемкая. Каждый раз он обрабатывает директории с помощниками, разбирает пути к ним на основе имени запрошенного класса (вспомните структуру каталогов ZF и как формируется название класса). Еще он проверяет тот ли класс находится файле, который определил движок, если нет, то сообщение об ошибке добавляется в стек PHP.

Такая «пробежка» по каждому префиксу, каждой папке в префиксе, нахождение файла который соответствует вызванному классу и еще и проверка на существование в нем ожидаемого класса – приводит к тому, что выполняются многократные монотонные операции, которые, по сути, нужно проводить единожды после обновления списка помощников вида. Все это очень и очень долго…

Шустрый Zend FrameworkНо разработчики нашли выход. Они сделали кеш подключаемых помощников, добавили проверку на предмет загруженности необходимого класса. Если класс уже подключен – отлично, юзаем. Если же класс еще не загружен – значит надо его подключить, а файл который определили теми самыми ресурсоемкими методами – добавить в файл кеша и на следующий раз мы избежим процедуру просчетов файла.

В результате, задача намного упрощается. При загрузке вида, помощники подключаются из файла кеша и виду не надо больше разбираться с просчетами и проверкой каталогов.

Будете смеяться, но включение такого хорошего функционала занимает всего несколько строчек. Предлагаю Вам посмотреть код функции, которую Вам надо будет вызвать в своем бутстрапе:

После того как Вы немного попользуетесь Вашим ресурсом вызывая такую функцию, Ваш файл кеша наполнится путями к файлам, которые будут подключатся заранее, избегая лишних просчетов и проходов по папках.

У Вас должен получится примерно такой файл кеша:

 

Как всегда, итог


 

Спасибо за внимание. Как всегда надеюсь, что был полезен со своим материалом. Желаю Вам шустрых проектов!

Теги:  Zend_View, zend framework, speedUp

Другие категории:

■ PHP ■ Zend Framework ■ Javascript ■ Другое ■ Книги ■ Украина
Комментарии к статье
  spirit

03.06.09 18:40:24

Cуперовая вещь. Не знал про нее. Завтра попробую в средненагруженой системе = посмотрю результат. Спасибо!

  illusive

04.06.09 06:53:32

Пожалуйста. Но у меня сразу же будет просьба - результаты замеров Вы не могли бы показать здесь? А то у меня небыло времени толком с этим поиграться...

  xen

28.07.09 06:02:27

Спасибо за статью очень пригодилась)))Улыбается

  illusive

28.07.09 13:37:00

Подмигивает

  sof

03.08.09 15:42:52

херня какаято а как же аутолоад в php?

  Sunburn

04.08.09 11:32:12

Ничего не хрень, автолоад работает долго, а тут нужно подключать кучи файлов. На средних сайтах производительность может на процентов 20-30 подскочить.

Спасибо за аккуратное решение данной проблемы =)

  illusive

05.08.09 12:53:45

Пожалуйста...

  balamut182

11.10.09 18:57:52

а если заюзать eAccelerator?

  illusive

12.10.09 00:17:19

Причем здесь eAccelerator?

  Kensai

12.11.09 21:17:23

Давно хотел ввести кеширование плагинов. Но тригером послужила статья, спасибо. Смеётся

  illusive

12.11.09 23:18:04

Пожалуйста Подмигивает

  Андрей

22.01.10 00:38:05

Спасибо, круто все так просто.
  Вячеслав

26.02.10 19:38:20

Вот например эти библиотеки грузятся при запуске почти любой страницы моего проекта Controller\Router\Route.php Controller\Router\Route\Abstract.php Controller\Router\Route\Interface.php Controller\Router\Route\Module.php Controller\Router\Route\Regex.php Db.php Db\Adapter\Abstract.php Db\Adapter\Pdo\Abstract.php Db\Adapter\Pdo\Mysql.php Db\Expr.php Db\Profiler.php Db\Profiler\Query.php Db\Select.php Db\Statement.php Db\Statement\Interface.php Db\Statement\Pdo.php Db\Table.php Db\Table\Abstract.php Db\Table\Definition.php Db\Table\Row.php Db\Table\Row\Abstract.php Db\Table\Rowset.php Db\Table\Rowset\Abstract.php Db\Table\Select.php Exception.php Filter.php Filter\Inflector.php Filter\Interface.php Filter\PregReplace.php Filter\StringToLower.php Filter\Word\CamelCaseToDash.php Filter\Word\CamelCaseToSeparator.php Filter\Word\SeparatorToSeparator.php Filter\Word\Separator\Abstract.php Filter\Word\UnderscoreToSeparator.php Loader.php Loader\Autoloader.php Loader\Autoloader\Interface.php Loader\Autoloader\Resource.php Loader\PluginLoader.php Loader\PluginLoader\Interface.php Registry.php Session.php Session\Abstract.php Session\Exception.php Session\Namespace.php Session\SaveHandler\Interface.php Uri.php Version.php View.php View\Abstract.php View\Helper\Abstract.php View\Helper\BaseUrl.php View\Helper\Interface.php View\Helper\Partial.php View\Interface.php Можна ли как-то их тоже в кэш добавить?
  illusive

26.02.10 19:47:39

Прочитайте внимательно статью))). Не для того это делается, чтобы просто загрузить файлик. Это делается для того, чтобы избежать лишних просчетов, которые делает Зенд при "поиске" необходимого файлика помощника вида))

  _moff

27.03.10 19:53:02

Вы написали "...надо будет вызвать в своем бутстрапе..."
Подскажите где именно лучше вызывать этот код. 

  illusive

27.03.10 23:10:57

Это не имеет значение. Главное вставить этот код ДО работы с помощниками вида, для обеспечения максимальной выгоды. У меня, например, этот код вставлен сразу после "регистрации" автолоада.

  _moff

28.03.10 20:53:51

Спасибо я уже разобрался, я создал свой метод _initViewCache, но честно говоря пока ощутимых результатов не увидел, проверю попозже  когда проект разрастётся

Оставить свой комментарий

 
Статьи | Портфолио | Друзья | Контакты
Идея и мозги: Васильев Андрей © 2008-2010 Web-Blog Кисточка и фантазия: Зелинский Богдан