Войти на сайт

Войди на сайт, используя одну из соцсетей:

×
Ты уже голосовал за этот комментарий
Наверх


Новости

Субботняя оптимизация Выходного

Сказ о том, как мы ускоряли Выходной
27 октября 2012 в 13:53
2131 просмотр

Сегодня прекрасное субботнее утро и мы с Родионом сидим в офисе Выходного и занимаемся оптимизаций сайта :) На самом деле это очень важный вопрос. Особенно, если твой сайт грузится дольше 11 секунд и весит больше 8 Мб! Именно с такой проблемой мы столкнулись примерно месяц назад. За месяц смогли сократить время загрузки в 4 раза, размер страницы в 5 раз, а количество запросов в 4,5 раза. Хотелось бы поделиться опытом и рассказать как нам это удалось.

Самая большая и тяжелая страница на сайте — это главная. Нам приходится выводить на неё все события на месяц вперед. Порой в день проходит до 40 событий, а это значит нужно грузить по 40 картинок на каждый день. А главная страница — это лицо сайта, поэтому она должна грузиться быстро. А лучше еще быстрее :)

Первым делом мы сшили все стили и javascript. Потом сшили необходимые картинки для сайта в 1 большой спрайт, для того чтобы сократить количество запросов к сайту. Это помогло, не незначительно. Поставили на сервер gzip и еще несколько кэширующих библиотек. Страница грузилась уже примерно 7-8 секунд, и весила все еще 7-8 Мб.

Самую большую проблему составляли афиши мероприятий. Их было слишком много. Не выводить мы их не могли, но и заставлять скачивать 8 Мб нашего посетителя тоже не могли себе позволить. Тогда наш взгляд упал на прекрасное решение — отложенная загрузка картинок (lazyload). Этот модуль позволяет подгружать фото по мере прокрутки страницы. Решение оказалось спасительным для нас. Мы сразу сократили время загрузки еще на 3 секунды, количество запросов почти в 2 раза и самое главное — размер сайта был уже не 8 Мб, а 3 Мб!

Потом начали копаться в коде и запросах к БД. Их оказалось более 300 для главной! В основном потому что мы выводили афишу на 3 месяца вперед. Решили ее сократить до 1-го месяца. Переставили индексы, переписали часть запросов. Сайт стал грузиться еще на секунду быстрее. Теперь нам необходимо было делать 180 запросов к базе для того чтобы сформировать главную страницу.

Мы были уверены, что можно сделать сайт еще быстрее. Долго думали, что еще можно упростить и решили выводить список ближайших киносеансов не на каждый день, а один, но разбить его на 2 дня. Этим самым мы решили сразу 2 задачи. Мы смогли сократить количество обращений к базе с 170 до 70, время загрузки на полсекунды и сделали дополнительный акцент на сеансах и фильмах, потому как многие наши друзья жаловались, что просто не замечают расписание. И это действительно было так. После нововведения количество просмотренных страниц увеличилось на 15%, как и среднее время пребывания на сайте, а показатель отказов снизился на 5%. Что не могло не радовать :) Не знаю, это ли повлияло, или открытие нашего собственного блога на сайте, но сразу же, через пару дней, у нас был новый рекорд посещаемости.

После таких воодушевляющих показателей довольно сложно остановиться :) Поэтому мы еще раз облазили весь сайт в поисках того чтобы еще можно переписать и сделать быстрее. И заметили что огромное количество времени приходится тратить на загрузку сторонних библиотек. Приняли решение убрать кнопки социальных сетей с главной страницы, а Google-карты грузить только при переходе в режим «карта» на сайте. Сайт стал почти на 1 Мб легче. Количество запросов снизилось до 54, размер составил 1,2‒1,4 Мб, а скорость загрузки — 2,94 секунды.

Теперь я думаю мы успокоимся, но ненадолго :) Буду рад ответить на ваши вопросы в комментариях. 





Читай также





4 комментария

Богдан Волков
Богдан Волков 27 октября 2012 в 15:05
Интересная статья. :) Вопрос вообще не по теме - я покупал карту выходного когда она стоила еще 150 грн. Она действительна навсегда верно? :)
0
Родион Ерошек
Родион Ерошек 27 октября 2012 в 17:35
Богдан, она у тебя QR-кодом?
0
Макс Пашковский
Макс Пашковский 28 октября 2012 в 01:05
Колосальная и вдохновляющая работа. Молодцы ребята. Продолжайте в том же духе!!!
+1
Александр Рыжков
Александр Рыжков 28 октября 2012 в 07:46
Макс, спасибо)
0