Программируя все более крупные и сложные информационные системы, я осмыслил очень большую важность производительности подобных систем, ведь от этого в немалом объеме зависит успех проекта.
Так вот, стабильность, скорость и надежность. По этому поводу я и решил написать небольшую заметку на тему ускорения Zend_View. Информация взята из мануала Zend Framework – решил ее продублировать и более подробно объяснить, так как мало кто обращает внимание на эту информацию.
К делу
Для ускорения вида Вашего приложения, построенного на основе Zend Framework необходимо в Вашем бутстрапе создать функцию, которая будет использовать кеш подключаемых файлов PluginLoader'а.
Zend_View
построен таким образом, что подключение его помощников и других
программных компонентов – задача очень ресурсоемкая. Каждый раз он
обрабатывает директории с помощниками, разбирает пути к ним на основе
имени запрошенного класса (вспомните структуру каталогов ZF и
как формируется название класса). Еще он проверяет тот ли класс
находится файле, который определил движок, если нет, то сообщение об
ошибке добавляется в стек PHP.
Такая «пробежка» по
каждому префиксу, каждой папке в префиксе, нахождение файла который
соответствует вызванному классу и еще и проверка на существование в нем
ожидаемого класса – приводит к тому, что выполняются многократные
монотонные операции, которые, по сути, нужно проводить единожды после
обновления списка помощников вида. Все это очень и очень долго…
Но
разработчики нашли выход. Они сделали кеш подключаемых помощников,
добавили проверку на предмет загруженности необходимого класса. Если
класс уже подключен – отлично, юзаем. Если же класс еще не загружен –
значит надо его подключить, а файл который определили теми самыми
ресурсоемкими методами – добавить в файл кеша и на следующий раз мы
избежим процедуру просчетов файла.
В результате, задача намного
упрощается. При загрузке вида, помощники подключаются из файла кеша и
виду не надо больше разбираться с просчетами и проверкой каталогов.
Будете
смеяться, но включение такого хорошего функционала занимает всего
несколько строчек. Предлагаю Вам посмотреть код функции, которую Вам
надо будет вызвать в своем бутстрапе:
После
того как Вы немного попользуетесь Вашим ресурсом вызывая такую функцию,
Ваш файл кеша наполнится путями к файлам, которые будут подключатся
заранее, избегая лишних просчетов и проходов по папках.
У Вас должен получится примерно такой файл кеша:
Как всегда, итог
Спасибо за внимание. Как всегда надеюсь, что был полезен со своим материалом. Желаю Вам шустрых проектов!



