Извините, регистрация закрыта. Возможно, на событие уже зарегистрировалось слишком много человек, либо истек срок регистрации. Подробности Вы можете узнать у организаторов события.
Подойди системно к оптимизации своих проектов!
На курсе разберём самые часто встречающиеся решения, которые могут негативно влиять на производительность веб-сайтов. Сделаем общий обзор подходов к оптимизации, а также разберём примеры неоптимального кода реальных проектов. На практике сделаем оптимизации тестовых примеров.
Преподаватель-практик: ведущий разработчик web-отдела Good Line — Евгений Попов.
Требования
Начальная квалификация веб-разработчика (будем активно работать с исходным кодом и разбирать технические детали).
Программа:
9 занятий. 14 часов практического материала. 2 раза в неделю, по понедельникам и четвергам.
1. Проблема производительности и цели оптимизации
- Границы курса
- Зачем оптимизировать? Субъективное и объективное.
- Решение через понимание: бенчмаркинг и профилирование.
- Некоторые инструменты бенчмаркинга и профилирования.
2. Архитектура веб-приложения
- Веб-стэк. Путь веб-странички.
- Проблемы производительности: фронт, сеть, приложение бэка, диск, база, снова сеть.
- Монолит, сервис, SPA.
- Бенчмаркинг как часть тестирования и профилирование как часть эксплуатации. +
3. Базы данных
- Подходы и инструменты бенчмаркинга, профилирования и мониторинга.
- Объясняя EXPLAIN.
- Индексы в БД, понимание, отладка.
- GROUP BY и ORDER BY.
- COUNT() на каждой странице
- Пагинаторы
- Поиск через LIKE
- INSERT/UPDATE в цикле (AUTOCOMMIT)
- UPDATE и SQL-cache
4. Обработка данных
- Вычитывание полотнищ данных в память
- Набор буфера конкатенацией
- Импорт больших объёмов данных
- Перехлёст cron-задач
- Снятие и поднятие дампа
- MySQL: фрагментация таблиц
- Синхронная статистика
5. Сеть и передача данных
- Ненужные сетевые запросы
- Синхронные сетевые запросы
- Синхронная отпавка почты, другие блокирующие синхронные задачи.
- DNS
- Асинхронность в разных ЯП. Знай свой ЯП.
6. Приложение
- time limit и memory limit. Каскадное обрушение.
- CMS и SQL DESCRIBE
- PHP: header location + die. CMS redirect. Тяжелые "Хвосты".
- PHP: выдача файлов
- Сессии: на диске, в базе, в key-value хранилище, на клиенте.
- Сессии: время жизни, регенерация. Сессия vs авторизация. Сессии для всех?
- Дорогая проверка прав. Дорогая 404.
- Админка часть сайта?
- REST и состояния.
- Масштабирование.
- Кэширование.
- Мониторинг и логирование.
7. Статический контент
- Ширина канала: gzip, cache-control, cdn, dns-precache, keep-alive, http2
- Минификация, тайлы, svg.
- optipng, jpegoptimize и т.п.
- Другая сторона: Блокировка отображения в браузере.
- Другая сторона: CPU пользователя (svg, js, css)
- Метрики PageSpeed Insights vs ощущения пользователя
- Хранилища картинок. Метаданные картинок. Размеры в теге IMG
- Видео, другие файлы. Папочка uploads.
8. Фронтэнд
9. Файловая система
- Диски, RAID
- Профилирование
- Особенности некоторых ФС
- ФС и ОС
- Битва за место
Первый поток курса учится с 25 февраля. Присоединиться к нему можно до 28 февраля, когда будет следующий набор — пока неизвестно.