Оптимизация кода
Для тех, чей опыт программирования не связан с Web, оптимизация может иметь большое значение. В случае использования языка РНР, большая часть времени ожидания пользователя веб-приложения связана с подключением и загрузкой из сети. По сравнению с этим эффект от оптимизации кода оказывается несущественным.
Использование простой оптимизации
Тем не менее, существует несколько простых методов оптимизации, которые создают ощутимый эффект. Многие из них связаны с приложениями, которые через РНР-код взаимодействуют с базами данных, такими как MySQL. Некоторые из методов перечисляются ниже:
- Уменьшение подключений к базам данных. Подключение к базе данных часто является самой медленно выполняемой частью любого сценария. Выйти из положения можно с помощью постоянных соединений.
- Ускорение запросов в базы данных. Необходимо уменьшать количество запросов и обеспечить их оптимизацию. Для сложных (а, следовательно, медленных) запросов обычно существует несколько методов оптимизации. Выполняйте запросы через интерфейс командной строки базы данных и пробуйте различные варианты их ускорения. В MySQL для выявления ошибочных запросов можно применять оператор EXPLAIN. (Использование этого оператора рассматривалось раньше). Обычно идея заключается в сведении к минимуму количества соединений и максимальному использованию индексации.
- Сведение к минимуму генерации статического содержимого из PHP-кода. Если каждый фрагмент HTML-кода генерируется операторами echo или print(), приложение работает намного медленнее. (Это один из аргументов в пользу разграничения логики и содержимого.) То же относится к динамическому генерированию графических кнопок. Лучше сгенерировать все кнопки средствами РНР один раз, а затем повторно использовать их по мере необходимости. Если выполняется генерация статического содержимого из функций или шаблонов при каждой загрузке страницы, имеет смысл реализовать однократный вызов функций либо использование шаблонов и сохранение результатов.
- Использование функций обработки строк вместо регулярных выражений при любой возможности. Эти функции обладают более высоким быстродействием.
- Использование строк с одинарными кавычками вместо строк с двойными кавычками, где только это возможно. РНР выполняет анализ строк с двойными кавычками, выискивая переменные, имена которых необходимо заменить значениями. Строки с одинарными кавычками не анализируются. С другой стороны, одинарные кавычки чаще применяют для статического содержимого. Попытайтесь отыскать способ избавиться от строк вообще, заменив их статическим HTML-содержимым.
Использование продуктов Zend
Компания Zend Technologies разработала механизм сценариев (с открытым исходным кодом) РНР, начиная с версии 4. В дополнение к базовому механизму можно загрузить улиту оптимизации Zend Optimizer/ Этот многопроходный оптимизатор выполняет оптимизацию кода и может повысить быстродействие сценариев от 40% до 100%. Для выполнения улиты оптимизации необходима версия PHP 4.0.2 или выше. Исходный код программы можно бесплатно загрузить из веб-сайта Zend по адресу:
http://www.zend.com/
Этот подключаемый модуль выполняет оптимизацию кода, получаемого в результате компиляции времени выполнения сценария. Ожидается выпуск нового продукта Zend Cache, который выполняет компиляцию PHP-сценариев и буферизирует их. Таким образом, повторная компиляция сценариев потребуется только в случае их изменения. Это позволит еще больше повысить быстродействие.
Тестирование
Просмотр и тестирование кода является еще одним важным этапом разработки программ, который часто упускают, занимаясь программированием для Веб. Очень легко два-три раза запустить программу и отметить, что она нормально работает. Это распространенная ошибка. Прежде чем выпустить продукт, необходимо тщательно проанализировать и испытать несколько сценариев.
Мы рекомендуем два метода снижения количества ошибок в коде. (Полностью избавиться от ошибок никогда не удастся, но большинства из них вполне можно избежать.)
Во-первых, практикуйте проверку кода, когда его просматривает другой программист и предлагает усовершенствования. Подобный анализ часто выявляет:
- Допущенные ошибки.
- Тестовые варианты, которые не учел разработчик.
- Возможности оптимизации.
- Возможности совершенствования степени защищенности.
- Существующие компоненты, которые можно использовать для усовершенство-
вания фрагментов кода. - Дополнительные функциональные возможности
Даже если код разрабатывается в одиночку, имеет смысл найти коллегу, находящегося в подобной ситуации, и анализировать код друг друга.
Второй метод предусматривает поиск лиц, которые выполнят тестирование веб-приложений, ставя себя на место конечных пользователей продукта. Главное отличие веб-приложений от настольных систем состоит в том, что с веб-приложениями работает самая широкая публика. Здесь не следует рассчитывать, что пользователи разбираются в компьютерной технике. Их нельзя снабдить длинным руководством либо кратким справочником. Вместо этого веб-приложения должны быть самодокументируемыми и самоочевидными. Необходимо учесть возможные способы использования приложения. Удобство работы с приложением имеет абсолютный приоритет.
Опытному программисту или пользователю Веб иногда трудно понять проблемы неискушенных пользователей. Одно из решений — найти тестеров, которые представляют типовых пользователей.
В прошлом применялся следующий подход — сначала выпускались лишь бета-версии веб-приложений. Когда, как предполагалось, большинство ошибок было исправлено, приложение публиковалось для небольшой группы пользователей и невысокой интенсивности трафика сайта. Предложите первым 100 пользователям бесплатные услуги в обмен за отзывы о сайте. Гарантируем, что они укажут на такие комбинацииданных или варианты использования, о которых разработчик даже и не подозревал. Если создание веб-сайта заказывает некоторая компания, она обычно может предоставить для его тестирования достаточно неопытных пользователей в лице своих сотрудников. Существенное преимущество такого подхода состоит в укреплении чувства причастности к сайту со стороны клиента.
Источники дополнительной информации
Информацию по управлению версиями можно найти на веб-сайте CVS по адресу:
PHP-компоненты, IDE и системы документирования можно найти на сайте SourceForge:
http://sourceforge.net
Если материал вас заинтересовал, рекомендуем ознакомиться с методологией разработки программного обеспечения, посвященной областям, где требования часто меняются, к которым относятся и веб-приложения. Адрес веб-сайта Extreme Programming:
http : / /www. extremeprogramming.org
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться