200 likes | 404 Views
Оптимизируем время загрузки страницы. Мациевский Николай, Acronis. Время загрузки страницы. * Данные получены с помощью Firefox/Firebug/YSlow. Время загрузки страницы. Основное время уходит на: Сетевые задержки Загрузку ресурсов (картинок и др.) Загрузку CSS- файлов
E N D
Оптимизируем время загрузки страницы Мациевский Николай, Acronis
Время загрузкистраницы * Данные получены с помощью Firefox/Firebug/YSlow
Время загрузкистраницы Основное время уходит на: • Сетевые задержки • Загрузку ресурсов (картинок и др.) • Загрузку CSS-файлов • Загрузку JS-файлов
Оптимизация загрузки Что можно уменьшить: • Время передачи запроса • Время передачи ответа • Число запросов
Оптимизация загрузки Основные направления: • Сжатие данных (уменьшение времени ответа) • Кеширование (уменьшение числа запросов) • Слияние (уменьшение числа запросов) • Распределенные системы (уменьшение времени ответа)
Сетевые задержки DNS lookup: • Обычно 20-120ms • Не более 2-4 хостов на страницу • Заголовок keep-alive • Избегаем редиректов (301/302)
Сжатие данных (cookie) Уменьшаем размер заголовка Cookie: • Убираем ненужные • Следим за размером • Выставляем только на требуемых страницах • Следим за сроком действия (Expires)
Сжатие данных (ответ) Уменьшаем размер кода: • Убираем все лишнее (minify) • AJAX-запросы. JSON вместо XML • gzip- / deflate-сжатие. Поддержка «старых» браузеров
Сжатие данных (CSS) Уменьшаем размер кода: • Имена классов / идентификаторов • Пути к фоновым изображениям • CSS Tidy / gzip
Сжатие данных (JS) Уменьшаем размер кода: • Dean Edwards Packer dean.edwards.name/packer/-78% • Dean Edwards Packer + gzip: -82% • YUI Compressor julienlecomte.net/yuicompressor/-50% • YUI Compressor + gzip: -83% * В качестве примера рассматривалась библиотека jQuery
Кеширование Уменьшаем число повторных запросов: • Фоновые картинки (CSS) вместо <img> • Заголовки Expires / Cache-Control • ETags (уникальные идентификаторы запрашиваемых ресурсов) • Проблема версионности
Слияние Уменьшаем число запросов: • Слияние CSS-файлов (подключение через @media) • Слияние JS-файлов («сборка» одного файла для публикации) • Слияние картинок: CSS sprites (все иконки в одном файле / roll-over эффекты)
Экстремальное слияние Уменьшаем число запросов: • JS / CSS в одном файле (взаимные комментарии) • HTML / JS / CSS в одном файле (yandex) • CSS / картинки в одном файле (IE не поддерживает) • Минимальный размер страницы «по умолчанию» (google)
Распределенные системы Уменьшаем время ответа: • Round-robin балансировка • Балансировка по нагрузке • Балансировка по географии • Балансировка на клиенте
Распределенные системы Балансировка на клиенте: • Сеть серверов для обслуживания запросов • Список серверов в одном файле • AJAX/Flash-приложение для выбора сервера
Балансировка на клиенте веб-сервер веб-сервер Выбор сервера производится непосредственно на клиенте веб-сервер
Заключение Уменьшение времени загрузки страницы: • Yahoo: 2.4s -> 0.9s (2,7 раза) Общие рекомендации: • Загрузка за 10 секунд на модеме (общий размер меньше 36 кб)
Спасибо за внимание Оптимизируем время загрузки страницы Мациевский Николай, Acronis