10. Бекенд
• Элементарное разделение боевого и тестового
окружения;
• В боевом режиме должны быть отключены все
debug-режимы;
• Включаем стандартные средства ускорения кода
(например, opcache).
11. ORM
• Чрезмерное увлечение ORM;
• Неконтролируемо сложные SQL-запросы;
• Запросы вида “select *”;
• Запросы без “limit/offset”;
12. Объектная модель фреймворка
• Непродуманное использование объектной
модели – например, сначала создаём объекты, а
затем выбираем из них нужные;
• Ошибки ORM помноженные на объектную
модель фреймворка могут привести к секундам
на вычисления простых страниц.
13. Вычисления онлайн
Попытки вычислить онлайн то, что не надо делать
онлайн:
• Счётчики;
• Статистика;
• Отправка почты;
• Вызовы внешних API;
Хотите ухудшить ситуацию? Откройте транзакцию
перед долгой операцией, а закройте после.
14. Прегенерация контента
Всё, что можно вычислять по cron’у –
вычисляйте по cron’у!
Это не стыдно, стыдно, когда проект не работает
15. Использование очередей
Структура данных с дисциплиной доступа к
элементам FIFO (First In First Out).
Применения:
1. Отложенная обработка (рассылки, обновления
лент новостей);
2. Межсервисная коммуникация;
17. База данных
• Настройки по умолчанию;
• Избыточная нормализация;
• Неверные индексы или их отсутствие;
• Включение slow-log и изучение его;
• Тонкий тюнинг запросов;