Разность показателей
Довольно часто происходит так, что сфера разработки была измерена от и до, и все было отлично, но productionпоказывает абсолютно другие результаты. Это связано в первую очередь с тем, что вы измерили что-то не так или не все. Попробуйте измерить характеристики в production. Существует достаточно много хороших приложений, которые не только справляются со своим основным предназначением, но и выдают полную статистику в реальном времени согласно оставленным вами таймерам.
Бывают и такие ситуации, когда с вашей стороны время отдачи с сервера безупречное, а пользователи жалуются на то, что страницы открываются долго. В таком случае попробуйте изменить размер передаваемого объёма информации и характеристики счетчиков производительности. Причин тут может быть несколько, одной из которых является необходимость установки CDNдля работы со статикой. С другой стороны, все может исходить от провайдера, и после его смены все заработает, как и должно было.
Прописывайте исключения только при необходимости
Часто можно проследить в коде такую тенденцию, когда webразработчик старается на одно действия прописать сотню возможных исключений, при этом не думая, что сервер просто рухнет. Советуем просмотреть и свой код на наличие подобных ненужных операций. Возможно, не все из них бесполезны, но они все равно нагружают сервер. В таком случае заверните их в if, чтобы данные исключения использовались только при необходимости.
Еще одним примером являются одинаковые фрагменты сайта. Например, headerи footerостаются практически неизменными при переходе на другую страницу. Что мешает нам поместить их в кэш или заранее сгенерировать, а не каждый раз прописывать все заново? Очевидно, что данный способ решения проблемы будет наиболее оптимальным и сможет сэкономить вам время.
Асинхронная пакетная обработка
Еще одной распространённой ошибкой webкодеров является обработка запросов по одному, несмотря на то, что общее их количество переходит за сотню. Почему бы не обрабатывать их все единым запросом? Если говорить о связи с базой данных в этом случае, то разницы в задержке практически не будет. Зачастую нужно провести небольшое количество изменений, чтобы добавить пакетную обработку, зато скорость отклика увеличиться в разы. То же относится и к другим запросам, ведь обращение куда-либо тоже требует времени, потому советуем уменьшать количество запросов до минимума.
Для того, чтобы уменьшить время ответа от сервера, задействуйте асинхронную пакетную обработку. Сделать это можно не всегда, но все же. Если язык, на котором написан код позволяет использовать ее и сгруппировать запросы для исполнения в асинхронном порядке, то сделайте это и заметите существенные ускорения в работе.
Подведение итогов
Прежде, чем начать оптимизацию своего приложения или сайта, определитесь — что конкретно нужно исправлять. После проанализируйте все еще раз, только через утилиты профайлинга или же с помощью встроенной в код дебаг-панели. Нами были рассмотрены ошибки, связанные с разностью показателей скорости отклика сервера у администратора и пользователей. Также, webайтишники часто стараются прописать максимум исключений к определенному действию, при этом забывая про нагрузку на сервер, или же не задумываются о том, что обработка запросов группой заметно быстрее, нежели по одному. Постарайтесь избежать подобных ошибок, а если уже совершили их, то поправьте код, убедившись в результате.