Анализируем загрузку веб-страницы. Анализируем загрузку веб-страницы Используйте CSS спрайты для сокращения HTTP запросов

Многие пользователи хотят, чтобы их компьютер работал быстро, потому используют программы для удаления временных файлов, такие как , и на автомате чистят систему (удаляя в том числе и кэш браузера). А ведь это и является одной из основных причин замедления загрузки страниц в браузере.

Зачем браузеры создают кэш?

В одной из статей Александр Шихов описал, . Пересказывать всю статью не буду, лишь расскажу главную суть. Кэш нужен как раз для того, чтобы сайты открывались очень быстро. Если каждый день удалять его, то при последующем запуске браузера и попытке открыть любимые сайты браузеру придется снова загружать те же данные, которые он мог бы открыть c локального диска (кэша) за доли секунды.

Почему нас приучили чистить кэш?

Многие годы разработчики программ для чистки системы приучали нас, что кэш штука лишняя и его надо очищать. Обосновывали это просто — он занимает много места, которое можно использовать более рационально. Но на деле это лишь уловка, повод прибавить две-три сотни мегабайт и несколько тысяч файлов к статистике найденного «мусора» в системе. Это позволяет выглядеть такому продукту лучше в глазах пользователей за счет того, что он находит больше (или не меньше) конкурентов.

Связано это с тем, что большинство оценивает количество найденного мусора, а не его качество. Если какая-то программа находит 700 мегабайт мусора в системе, а другая 900 мегабайт, то лучше определенно выглядит вторая программа. И плевать, что 200 мегабайт сверху были добавлены за счет прибавления кэша браузеров, который через день восполнит те самые 200 мегабайт. Это отличный повод предложить почистить систему еще раз, не так ли?

Удаляйте историю браузеров и временные файлы без очистки кэша

Чтобы предотвратить удаление кэша при использовании программ для чистки дисков, просто отключите очистку кэша в настройках программы и продолжайте пользоваться. Вы сразу заметите, что она стала находить меньше мусора, но помните, что это из-за отсутствия в «мусоре» кэша, который делает загрузку браузеров быстрее и работу с сайтами удобнее.

Используйте приватный режим (режим «инкогнито»)

Если вы не хотите, чтобы какие-то сайты оставляли следы на вашем ПК, то просто активируйте приватный режим просмотра страниц (в он активируется сочетанием Ctrl+Shift+N), после закрытия которого вся история и данные о просмотренных страницах будут удалены из браузера и никто о них никогда не узнает.

Кэш браузера – очень полезная и нужная штука, которую не нужно удалять, если не хотите сделать серфинг в сети неудобным. Если вы регулярно чистите кэш своих браузеров, то все, чего вы достигаете этим действием — замедляете скорость загрузки страниц, увеличивая время ожидания и снижая свою же производительность.

Мы выпустили новую книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».

Нейл Патель выпустил статью о том, как увеличить скорость мобильного сайта.

Для чего это нужно: в 2014 году сайт Walmart загружался на мобильных устройствах 7 секунд, демонстрируя пользователям белый экран. За год Walmart сократил время загрузки страницы до 2.9 секунд. 4 секунды удалось срезать за счет сокращения барьеров, препятствующих загрузке: упрощения кода JavaScript, удаления медленных шрифтов, оптимизации изображений. Увеличение скорости на каждую секунду повышало конверсию сайта на 2%.

Плюс 2% только из-за того, что пользователь стал ждать открытия страницы меньше на 1 секунду. Это веский повод для проверки своего сайта. Даже если вам кажется, что он работает быстро, вполне может оказаться, что лишние секунды все-таки есть, и они воруют вашу прибыль. О том, как узнать, насколько быстрый ваш сайт, и как ускорить его при необходимости, рассказал Нейл Патель.

Ирина Винниченко

Контент-маркетолог SEMANTICA

Скорость загрузки сайта – важный параметр для продвижения в поисковых системах. Низкая скорость сокращает количество клиентов на сайтах услуг, продажи в интернет-магазинах, аудиторию блогов.

Есть несколько сервисов, которые помогут узнать скорость загрузки сайта. Не буду описывать их возможности, быстрее протестировать и на конкретном примере узнать, как работают сервисы, оценить плюсы/ минусы.

  • pr-cy.ru
  • mainspy.ru
  • айри.рф

Подробнее о том, как определяется скорость загрузки сайта, можно почитать в статье Семантики .

В своих статьях я много говорю о важности мобильной оптимизации. Почему я придаю этому такое большое значение?

Потому что мобильный трафик – это реальность диджитал-мира. Сейчас он важнее десктопного трафика. 51.3% всех пользователей интернета – это мобильные пользователи. В будущем цифра будет расти.

Актуальный способ адаптации сайта под мобильные устройства – это адаптивный веб-дизайн с ненавязчивыми всплывающими окнами.

Адаптивный веб-дизайн обеспечивает правильное отображение страниц ресурса на любом экране: планшет, телефон, ноутбук. Он делает это с помощью выбора таблиц стилей, скрытия определенных элементов.

Кроме того, все лучшие практики оптимизации, разработанные для десктопов, подходят и для мобильных. Я расскажу об одной из них – о скорости.

Почему важно думать о скорости

Пользователи ждут от сайта быстрой загрузки. Если он тормозит, вы теряете тонны трафика.
Приведу в пример исследование. На вопрос о том, сталкивались ли вы с сайтами, которые на мобильных загружаются слишком долго, 73% пользователей ответили положительно. 40% из них покидали сайт, если загрузка страницы занимала более 3 секунд.

Есть исследования, которые показывают, что люди ждут еще более быстрой загрузки сайта – буквально в мгновение ока, то есть в течение 400 миллисекунд.

Не будем забывать, что Google тоже ориентируется на скорость загрузки сайта. Он использует скорость как фактор ранжирования.

Узнайте скорость загрузки своего сайта

Вы можете думать, что ваш сайт загружается достаточно быстро. Но он может быть медленнее, чем вы думаете.

Один из лучших тестов скорости мобильных сайтов – Think With Google :

Протестируем на сайте Amazon.com, потому что им часто пользуются с мобильных.

Процесс анализа занимает минуту или две.

По окончании анализа вы увидите три оценки:

В этой статье для нас важны первые две оценки: mobile friendliness и mobile speed, то есть адаптивность сайта под мобильных юзеров и скорость загрузки.

Первая оценка показывает, насколько легко ваш сайт использовать на мобильном. Это общая метрика. По этому показателю у Amazon все отлично. Зато плохо по скорости загрузки.
Think With Google предлагает бесплатную диагностику сайта. Я рекомендую вам согласиться на подготовку подробного отчета и посмотреть, что сервис предложит по итогам анализа.

Улучшите дизайн мобильного сайта

Вспомните тот момент, когда вы создавали дизайн своего сайта. Вы учитывали мобильные девайсы? Вряд ли.

Скорее всего, на тот момент на первом месте был десктоп. Но теперь нужно пересмотреть подход к дизайну с учетом новых реалий.

Мобильные сайты сильно изменились за последние пару-тройку лет. Раньше обычным явлением было наличие двух версий сайта – обычной, десктопной, и мобильной. Последние было легко идентифицировать по субдомену “m.”:

В этой ситуации мобильный и десктопный сайты управляются по-разному. Их можно сравнить с Макдоналдс и МакАвто. Декстоп – это ресторан Макдоналдс. Мобильный сайт – это МакАвто.

Это значит, что мобильная версия – приложение к десктопу, она выполняет свои задачи, но не может предоставить тот сервис и комфорт, который предоставляет главный, десктопный сайт.

Но теперь этого мало. Пользователи девайсов хотят получать лучший опыт. Им нужен отличный и быстрый сервис. Удовлетворить их желания поможет адаптивный веб-дизайн.

Адаптивный веб-дизайн означает способность сайта меняться в зависимости от того, с какого устройства его открыли. Таким образом, пользователи мобильного браузера и десктопного будут открывать одинаковый сайт, но то, как они его видят, будет зависеть от девайса, который используется при загрузке.

Такой подход нравится Google, что подтверждается заявлением компании : «Адаптивный дизайн – это тот паттерн дизайна, который рекомендует Google».

Возможно, вы думаете: «Ок, круто. Но как адаптивный веб-дизайн поможет мне решить проблемы со скоростью».

Адаптивный веб-дизайн обычно позволяет загружать сайт быстрее, чем в случае с мобильной версией. Используя его, вы получаете большое преимущество в SEO.

Так что если у вас еще нет адаптивного веб-дизайна, самое время о нем задуматься.

Делайте сайт легким

Когда на сайте много визуализации, кажется, что это выглядит здорово. Так легче зацепить пользователя.
Но иногда визуализации слишком много. В результате сайт загружается медленнее. Чем больше изображение вы добавляете, тем дольше длится загрузка.

Это состояние разработчики называют code bloat, или раздутое программное обеспечение. В переводе на язык пользователя-непрограммиста – сайт утяжеляется излишним кодом.

В большинстве случаев причина появления лишнего кода – чрезмерный фокус дизайнера на визуальной презентации. Именно чрезмерный, ибо думать о красивом оформлении, конечно, необходимо. Но при этом эффективность сайта не должна отходить на задний план.

К счастью, эффективность и красивое оформление прекрасно сочетаются. Несколько советов:

Упрощайте

Леонардо да Винчи говорил, что: «Простота – это крайний предел опытности». Спустя почти пять сотен лет его слова звучат все также верно. Если вы посмотрите по сторонам, увидите, что все сложное вокруг вас заменяется минималистичным дизайном. Это работает и в отношении сайтов. Особенно мобильных, потому что на экранах портативных устройств слишком мало места. Сводное пространство легко переполнить. Подумайте о том, как избежать бардака.

Как правило, мобильному сайту нужно иметь только один CTA на страницу. Такое ограничение поможет вам сократить код и позитивно скажется на пользовательском опыте.

Вот пример простого дизайна от Rug Doctor:

Гламурно. Без лишнего блеска. Привлекает внимание.

Вам не нужны яркие цвета и фотографии, чтобы захватить внимание пользователей. Когда речь идет о дизайне для мобильных, «меньше» часто значит «больше».

Сокращайте шаги

Чем меньше посетителю сайта нужно делать, тем лучше.

Зачем делать 7 шагов между покупателем и покупкой, когда было бы вполне достаточно и трех. Сокращение воронки продаж поможет вам быстрее продать товар и упростит процесс для самого пользователя.

Такую стратегию используют многие интернет-магазины. Их опыт показывает, что сокращение этапов воронки повышает продажи.

Для примера приведу мобильный сайт Boden’s. Там очень легко купить продукт. Вы просто добавляете его в корзину, заполняете данные об оплате, оплачиваете.

Прямо и просто. Ничего лишнего.

Опять-таки, сокращая шаги, мы сокращаем код. Сложно сделать его огромным с минимумом страниц на сайте.

Используйте меньше изображений

Хорошие изображения полезны для любого сайта. Они нравятся пользователям, помогают в SEO. Но если хорошего становится слишком много, оно перестает быть хорошим.

Для справки: изображения занимают примерно 63% веса страницы.

С 2011 по 2015 средний вес мобильной страницы вырос в три раза.

Изображения – самые требовательные элементы страницы. Они занимают много места. Неоправданно много изображений – это плохо.

Уменьшить вес картинки можно двумя способами:

  • Обрезать картинку.
  • Сжать изображение.

Мне больше нравится второй вариант. Сжатие уменьшает вес картинки, не сказывается на качестве, сокращает время загрузки страницы. Кстати, краулерам поисковых систем тоже проще сканировать и индексировать страницу со сжатыми изображениями.

Не используйте пользовательские шрифты

Мне нравятся красивые шрифты. Но большинство из них очень требовательные.

Некоторые съедают тонну CSS, другие утяжеляют JavaScript. В любом случае, придется столкнуться с огромным кодом.

Минимизируйте код

Минимализация – это удаление любых элементов, которые не нужны для корректного существования кода – лишних пробелов, табуляции, пустых строк. Минимизация помогает увеличить скорость загрузки страниц.

После того, как вы соберете некоторую статистику по времени загрузки страницы и эффективной ширине канала для реальных пользователей, вы можете поэкспериментировать с изменениями, которые могут улучшить эти показатели. В случае значительных достижений в улучшении этого показателя стоит закрепить внесенные изменения.

Нижеприведенные советы частично уже фигурировали в других статьях: советы от Yahoo , объединение CSS-файлов , оптимизация времени загрузки страницы и многих других . Однако, повторение — учения, к тому же, в следующих советах есть несколько свежих моментов.

Можно попробовать следующие вещи:

    Если пользователи регулярно загружают десяток или больше некеширующихся или некешируемых объектов, стоит распределить их загрузку по 4 хостам. В этом случае обычно пользователь сможет установить в 4 раза больше соединений. Без HTTP-конвейера это выльется в уменьшение потерь на пересылку запроса примерно в 4 раза.

    При генерации страницы перед вами встанет задача распределения картинок по 4 разным хостам. Это легче всего сделать с помощью любой хеш-функции, например, MD5. Вместо того чтобы загружать все с одного http://static.example.com/ , создайте 4 хоста (например, static0.example.com , static1.example.com , static2.example.com , static3.example.com) и используйте 2 бита из MD5-суммы для каждой картинки, чтобы выбрать, на какой именно хост ставить ссылку на ее загрузку. Убедитесь, что все страницы используют один и тот же алгоритм соответствия (указывают на один и тот же хост для каждой картинки), иначе вы будете безрезультатно бороться против кеширования .

    Стоит, однако, заметить, что добавление еще одного хоста увеличивает расходы на дополнительные DNS-поиск и установку HTTP-соединения. Если у пользователей включена конвейерная обработка запросов или страница подгружает менее десяти объектов (лично я бы рекомендовал ориентироваться на 5-6 на хост, т.е. при 10 объектах можно вводить второй хост, при 16 — третий, а при 25 - четвертый ), то пользователи не ощутят выигрыша от увеличения числа параллельных запросов и вместо ускорения загрузки сайта заметят ее замедление. Преимущества данного подхода появятся только для страниц с большим числом внешних объектов. Стоит каким-либо образом измерить разницу во времени загрузки для ваших пользователей прежде, чем полностью внедрять данную методику.

    Возможно, лучшим выходом для ускорения загрузки ваших страниц для вернувшихся посетителей будет безусловное кеширование браузером статических картинок, файлов стилей и скриптов. Это никак не поможет при загрузке страницы для нового посетителя, но существенно уменьшит время загрузки страницы при повторных посещениях.

    Рассмотрите возможность расположить небольшие объекты (или зеркало, или их кеш) максимально близко от пользователей в терминах сетевых задержек. Для больших сайтов с международной аудиторией можно использовать как платные сети доставки содержания (Content Delivery Network ), так и отдельные виртуальные машины в пределах 50мс для 80% ваших пользователей вместе с множеством доступных методов для распределения запросов пользователей на ближайшую к ним виртуальную машину (к слову сказать, как раз так работают сайты многих международных компаний, в том числе, и Acronis , распределяющие пользователей по локальным версиям в зависимости от географического признака ).

    Регулярно проверяйте ваш сайт, заходя с помощью «рядовых» соединений. В моем случае использование «медленного прокси-сервера», который эмулировал плохое DSL-соединение из Новой Зеландии (768Кбит входящий, 128Кбит исходящий, 250мс задержка, 1% потери пакетов) вместо гигабайтного канала с несколькими миллисекундами от серверов в штатах, оказалось весьма полезным. Мы очень оперативно обнаружили и устранили ряд функциональных ошибок и проблем удобства использования.

    Для моделирования такого медленного соединения, я использовал модули ядра Linux netem и HTB , которые доступны с версии 2.6. Оба этих модуля устанавливаются с командой . Это позволяет добиться наиболее точной эмуляции, которую мне удалось найти, но я бы не назвал ее идеальной. Лично я не пользовался, но, по общему мнению, по скрытой возможности в их браузере, которая позволяет получить также некоторую дополнительную информацию по поводу загрузки.

    Если же вы хорошо знакомы с HTTP-протоколом и TCP/IP на пакетном уровне, то можно попробовать посмотреть, что происходит, используя tcpdump , или . Эти инструменты являются просто обязательными для сетевых отладок любого рода.

    Попробуйте протестировать часто загружаемые страницы вашего сайта на производительность из локальной сети, используя , который поставляется вместе с веб-сервером Apache . Если сервер отвечает дольше, чем 5-10 миллисекунд при генерации страницы, значит, стоит хорошо разобраться, на что же уходит серверное время.

    Если в результате таких тестов задержки оказались весьма высокими, и процесс веб-сервера (или CGI, если вы используете его) «отъедал» слишком много CPU, то причиной этого зачастую может оказаться необходимость в компиляции скриптов в процессе выполнения при каждом запросе. Такое программное обеспечение, как eAccelerator для PHP, mod_perl для perl, mod_python для python и т. д. могут кешировать серверные скрипты в скомпилированном состоянии, существенно ускоряя загрузку вашего сайта. Кроме этого, стоит найти профилирующий инструмент для вашего языка программирования, чтобы установить, на что же тратятся ресурсы CPU. Если вам удастся устранить причину больших нагрузок на процессор, то страницы будут отдаваться быстрее, и вы сможете выдавать больше трафика при меньшем числе машин.

    Если на сайте при создании страницы выполняется много запросов к базе данных или какие-либо другие тяжелые вычисления, стоит рассмотреть добавление кеширования на стороне сервера для медленных операций. Большинство людей начинают с записи кеша в локальную память или локальный диск, однако, эта логика перестает работать, если ваша система расширяется до кластера веб-серверов (каждый со своим локальным диском и локальной памятью ). Стоит взглянуть в сторону использования memcached , который создает очень быстрый общий кеш, который объединяет свободную оперативную память всех имеющихся машин. Клиенты к нему портированы на большинство распространенных языков.

    (Опционально) Подать петиция производителям браузеров с целью включить конвейерную обработку HTTP-запросов по умолчанию в новых браузерах. Если это будет сделано, то нам не придется исполнять эти «танцы с бубнами» (these tricks ), и большая часть веба будет загружаться быстрее для среднего пользователя. (В Firefox"е это отключено, предположительно, из-за некоторых прокси, некоторых балансировщиков нагрузок и некоторых версий IIS (привет, Microsoft! ), которые впадают в шок при конвейерных запросах. Но в Opera, по-видимому, провели существенную работу для того, чтобы включить эту возможность по умолчанию. Почему так не могут поступить все остальные браузеры?)

Заключение

Указанный список содержит мои мысли по увеличению скорости связи между браузером и сервером и может быть применен, в общем случае, ко многим сайтам не зависимо от того, как используется веб-сервер или язык разработки для написания сайта. Однако, к сожалению, все эти вещи делают довольно редко.

Хотя все советы направлены на уменьшения времени загрузки страницы, положительными побочными эффектами могут стать уменьшения трафика от сайта и уменьшения нагрузки на серверный процессор на просмотр одной страницы. Уменьшения затрат на ваш вебсайт при улучшении пользовательского восприятия ресурса должно быть веской причиной, чтобы потратить некоторое время на оптимизацию такого рода.

Один из самых важных аспектов вашего сайта - это скорость его загрузки; пользователи хотят мгновенно получать картинку без всяких тормозов, и если вы не в состоянии дать им это, то они долго не раздумывая, поищут информацию в другом месте. В этой статье мы обсудим 5 способов, которые позволят вам ускорить время загрузки вашего сайта.

1. Используйте YSlow для отслеживания времени загрузки страниц

Зная количество времени, которое тратится на загрузку страниц, вы сможете определить проблемные места. Также это придаст вам ещё один стимул, для того чтобы залезть в функционал и постараться исправить ситуацию.

Перед тем как мы начнём, вам необходимо установить YSlow, если вы уже конечно этого не сделали. YSlow - это расширение к Mozilla Firefox, которое вы сможете найти на этой странице:

Теперь давайте откроем какой-то сайт. Допустим Six Revisions, для того чтобы данные у нас были примерно одни и те же (просто откройте данный сайт в новой вкладке вашего браузера).

В нижней правой стороне вашего браузера, у вас находится специальная панель с иконкой (смотрите рисунок 1). Чуть поодаль данной панели, после загрузки страницы, рядом с ‘YSlow’ вы увидите число. Данное число - это время загрузки данной страницы в секундах в вашем браузере. Нам необходимо, чтобы данное число было как можно меньше.

Самыми часто встречаемыми «тормозилами» являются следующие объекты или операции:

  • Слишком много HTTP запросов
  • Не сжатые файлы JavaScript
  • Отсутствие времени истечения заголовков для графических файлов

Через несколько минут мы подробнее на этом остановимся.

Для того чтобы освоиться в этой системе, пройдитесь по нескольким сайтам и посмотрите время их загрузки. Можете протестировать сайты Google, Facebook, и парочку ваших любимых блогов/сайтов, где вы чаще всего бываете. Обратите внимание, что больше всего на скорость влияют JavaScript файлы и изображения.

Используем YSlow на полную

Помимо того что YSlow вычисляет время загрузки страницы, данное расширение также предоставляет вам расширенную информацию о том, что вам необходимо исправить для оптимизации загрузки вашего сайта, таким образом, вы сможете подлатать дыры.

Для получения подобной информации нажмите на вкладку Performance. После сканирования сайта, YSlow выдаст вам общую оценку, которая будет характеризовать производительность вашей страницы.

Доступ к информации можно ускорить с помощью CDN (сеть доставки контента). CDN лучше использовать для крупных сайтов. Используются они для того чтобы распределять информацию через несколько серверов в разных частях мира. Таким образом, информация будет загружаться с соответствующего сервера (который ближе всего к пользователю), чтобы не проходить через личные маршрутизаторы. YSlow также отслеживает запросы CDN.

Но люди, как правило, не используют CDN (что является довольно-таки дорогим удовольствием).

Классификация типов ошибок

Теперь давайте пройдёмся по каждому пункту, которые есть в выше упомянутом расширении. Далее вы найдёте краткое содержание того, по каким критериям оцениваются ваши страницы и пути решения проблем для достижения максимальной производительности.

Делайте как можно меньше HTTP запросов: HTTP запрос происходит, когда браузер посылает запрос на сервер. То же самое может происходить при подключении скриптов, файлов CSS, изображений, а также при асинхронных запросах, как со стороны клиента, так и со стороны сервера (Ajax и другие подобные технологии). Однако когда речь заходит о производительности системы, то стоит задуматься о том, сколько подобных запросов происходит у вас на странице. В качестве решения можно применить кэширование, чтобы помочь клиентским машинам быстрее подгружать скрипты, CSS и изображения.

Добавление заголовков Expires: 80% загрузки страницы ориентировано на скачивание скриптов, фотографии и файлов CSS. В большинстве случаев данные вещи не меняются на пользовательских машинах. Добавив немного коду в ваш файл.htaccess, вы можете кэшировать дублирующийся файлы на локальной машине пользователя (о том, как это сделать мы поговорим позже).

Компоненты Gzip: Применение Gzip или сжатие JS файлов, изображений, HTML документов, CSS файлов, и т.д. позволяет пользователям скачивать информацию в уменьшенном размере, что значительно увеличивает скорость загрузки страниц. К тому же это позволит сохранить место на сервере, однако распаковка данных может привести к торможению ответа, и напрямую зависит от браузера пользователя.

Располагайте CSS в верхней части страницы: если вы располагаете подключение к CSS файлам в верхней части страницы, то это значит, что они будут загружаться в первую очередь, а изображения и скрипты позже.

Размещайте JS в нижней части страницы: теперь, когда ваши CSS файлы будут загружаться вверху, самое время расположить скрипты JS прямо перед закрытием тега. Это позволит вашей странице отобразиться, а затем подключить необходимые скрипты.

Избегайте CSS выражений: я лично никогда не использовал CSS выражения (ещё их называют динамическими свойствами). Данные выражения являются собственной концепцией программирования для IE (такие как условные выражения) в CSS. Технология, которая используется в IE8, да и во всех остальных версиях больше поддерживаться не будет, так что в любом случае придётся завязывать с данным написанием CSS выражений. PHP больше подходит для подобных целей, к примеру, для того, чтобы загрузить разные CSS стили в зависимости от какого-то условия, такого как случайное число, время суток или браузер пользователя.

Пишите JS и CSS в отдельных файлах: если вы располагаете ваши скрипты в JS и стили CSS в отдельных файлах, то браузер с лёгкостью сможет их закэшировать, тем самым в последующем позволит вашей странице грузиться быстрее.

Сокращайте время DNS поиска: когда пользователь набирает имя вашего сайта в строке браузера, то тут же начинается DNS поиск IP адреса, по которому находится ваш сайт. Чем больше ваш сайт содержит внешних источников, тем больше будет занимать время DNS поиск. Как правило, один такой поиск длится 60-100 миллисекунд.

Минимизируйте JS: помимо сжатия посредством gzip, минимизация JavaScript файлов позволит вам облегчить скрипты, избавившись от ненужных пробелов, табов, и других специальных знаков, которые в совокупности увеличивают размеры файлов. Это же очевидно - чем меньше файлы, тем быстрее грузятся страницы. Для минимизирования JavaScript файлов можете использовать инструмент JSMIN.

Избегайте перенаправления: не имеет никакого значения, где вы делаете перенаправление, в JS, HTML или PHP. В любом случае ваш браузер получит заголовок с пустой страницей, на загрузку которой потребуется время. Так что просто старайтесь не применять редирект там, где его можно избежать.

Избегайте дублирования загрузки скриптов: если ваш браузер загружает скрипт более одного раза, это значительно сказывается на загрузке страницы. Математика тут не сложная. Чем больше загрузок одних и тех же файлов, тем дольше загрузка страницы. Просмотрите ваши скрипты и убедитесь, что вы не вызываете jQuery 2 или 3 раза. То же самое относится и к скриптам JS.

Что же… думаю этого достаточно. Теперь давайте перейдём к следующей вкладке YSlow, перед тем как рассмотрим некоторые другие техники, которые позволят увеличить скорость загрузки ваших страниц.

Вкладка Components позволит вам определить, какие нужно приложить усилия для улучшения скорости загрузки. Тут вы найдёте информацию о том, сколько весит каждый файл, а также сколько времени ему требуется на загрузку. Также вы сможете увидеть, для каких файлов применяется gzip, узнаете время ответа, а также являются ли файлы закэшированными на пользовательской машине, и когда заканчивается сам кэш. Эта информация может вам пригодиться при оценке проблем вашего сайта, вы будете знать, что у вас не так, и что нужно оптимизировать.

И наконец, перейдём к последней вкладке Stats tab. Тут вы найдёте информацию обо всех HTTP запросах, как для обычных файлов, так и для закэшированных. Значение Empty cache показывает, что данные файлы необходимо загрузить для отображения страницы. В свою очередь Primed Cache - это файлы, которые уже были закэшированы браузером пользователя. Это означает, что их скачивать не нужно.

2. Используйте CSS спрайты для сокращения HTTP запросов

CSS спрайты - это наверное самая значительная вещь, которую придумало человечество, после того как Тесла изобрёл электричество… Я действительно это сказал.. ой, я имел в виду Эдисона.

Ну, может быть не совсем самая крутая, но тем не менее.

CSS спрайты могут помочь значительно увеличить скорость загрузки страницы, сократив количество HTTP запросов, которые формируются для загрузки изображений.

Вы можете найти множество уроков, в которых говорится о том, что CSS спрайты удобны для навигации - в общем, для использования их в пользовательском интерфейсе.

Теперь давайте быстренько посмотрим, как на YouTube используют CSS спрайты. Так выглядит спрайт, которым они пользуются:

YouTube использует этот файл довольно оригинально. Загружают они его как фон классу sprite. Когда возникает необходимость в выборе какого-то элемента, происходит выбор изначальной позиции при помощи CSS свойства background-position, а затем применение высоты и ширины.

Давайте и мы попробуем что-то подобное. Поэкспериментируем на этом же самом изображении с сайта YouTube.

В примере, который расположен ниже, мы выводим логотип YouTube на экран. Используя тот же класс sprite, и то же самое изображение image, мы можем создать изображение, которое будет изменяться при наведении мышки.

.sprite { background:url(http://s.ytimg.com/yt/img/master-vfl87445.png); } #logo { width:100px; height:45px; background-position:0 0; }

Таким образом, используя данное изображение, мы можем свести все подключения к одному HTTP запросу. Ну, как эффект?

Ещё одно преимущество CSS спрайтов заключается в том, что при применении псевдо класса:hover, изображение не будет пропадать на несколько мгновений (которые уходят на загрузку нового изображения), как это происходит без использования CSS спрайтов.

.sprite { background:url(http://s.ytimg.com/yt/img/master-vfl87445.png); } #logo { width:100px; height:45px; background-position:0 0; } #button { background-position:0 -355px; padding:5px 8px; } #button:hover{ background-position:-25px -355px; }

3. Загружайте CSS файлы в начале, JavaScript в конце

Для некоторых сайтов, урезание количества HTTP запросов может привести к нарушению функциональности. Ещё один способ увеличить скорость загрузки страниц - это поместить все подключения к JavaScript файлам в конец документа.

Стоит также отметить:

  • Загружайте файлы CSS в разделе прямо перед началом тега body.
  • Подключайте JavaScript перед самым закрытием тега body.
  • Если вы будете следовать нашему совету, то позволите вашим пользователям любоваться вашим сайтов, в то время как на втором плане будет происходить загрузка ваших JavaScript скриптов.

    Примечание: Если вы не хотите перемещать теги JavaScript, потому что боитесь, что падёт функциональность, то я рекомендую вам использовать свойство defer. Применяйте его следующим образом:

    4. Используйте поддомены для параллельного скачивания

    Параллельная загрузка означает увеличение параллельных загрузок одних и тех же файлов. Пройдясь по множеству сайтов, вы можете заметить, что на многих из них запросы посылаются на static.domain.com и c1.domain.com. Это можно увидеть в нижней панели браузера.

    Это отличный способ увеличить производительность сайта. При использовании поддоменов, по сути, информация будет находиться на одном и том же сервере, однако для браузера они будут разными.

    Настройка процесса:

  • Создайте 3 поддомена на вашем сервере
  • Расположите ваши изображения в папках на разных поддоменах
  • Замените пути в ваших файлах
  • 5. Добавление заголовков Expires

    Некоторые сайты остаются нагруженными даже после применения всех методов, описанных выше. Но есть ещё пару методов.

    Пользователь может зайти на ваш сайт и совершить все необходимые HTTP запросы для отображения страницы, изображений, скриптов и т.д.

    Когда вы используете заголовки Expires, вы можете закэшировать все эти элементы на пользовательской машине, тем самым не только увеличив скорость загрузки страницы, а ещё и сократив трафик. Заголовки Expires могут быть применены ко всем вашим скриптам, CSS и изображениям.

    Данного эффекта можно добиться посредством нескольких строк, которые вам нужно добавить в файл.htaccess, который находится в корневом каталоге вашего сайта.

    Следующий пример.htaccess файла устанавливает заголовки expires на какое-то число в 2010 году для таких типов файлов как.ico, .pfd, .flv (файлы Flash), .jpg, .png, etc.

    Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"

    Будьте бдительны: если вы произведёте какое-либо изменение в данных файлах (в случае, если срок ещё не прошёл), то вам необходимо переименовать их (или добавить в название версию), иначе в кэше они не обновятся.

    К примеру, если у вас есть файл JavaScript, в котором вы что-то изменили, просто добавьте в название номер версии (что-то типа javascriptfile-1.0.js, javascriptfile-1.1.js и т.д.)

    Вывод

    Сегодня мы прошлись по многим способам. Надеюсь, вы отметили для себя несколько методов, которые будете активно применять в ваших проектах! Удачи!

    С некоторых пор, перманентно, примерно один раз из трех попыток, Яндекс. Почта стала мне выкидывать сообщение такого характера:

    И за что мне такое наказание? Я пробовал не обращать внимание, жал F5 , но толку? Оно может провисеть несколько часов или минут, потом исчезнуть, не появляться день, но неизменно… перманентно… словно заступая на дежурство по схеме «сутки-двое». (Сутки работает, двое-нет!) выскакивает это их навязчивая просьба «воспользуйтесь легкой версией».

    Господа, ответственные за разработку и сопровождение проекта «Яндекс. Почта»! Уверяю вас, что у меня достаточно мощный компьютер и интернет — соединение! Не надо мне впаривать Lite — страницу для слабых машин, сотовых телефонов и слабых соединений!

    Но.. мне крайне важно использовать именно полную версию почты Яндекс. Я собственно и переехал на Яндекс. Почту по причине её высокой функциональности! А тут.. как серпом по яйцам… В этой самой легкой версии обрезан функционал.

    Я вот намеренно не лезу в поиск Гугл, не пишу писем Яндексу. Не пытаюсь «решить» проблему. Зачем? Проблема не моя. Дело не в моем «железе» или софте. Зато считаю долгом довести до сведения людей, что такая проблема существует.

    Проблема возникает перманентно на разных провайдерах, конфигурациях железа, софта временных отрезках, и т.д.

    К стати, существует такая проблема не так уж и давно. Может полгода, от силы. Раньше НИКОГДА Яндекс. Почта так не глючила!

    Но.. если такое будет продолжаться достаточно долго, то придётся просто-напросто съехать с яндекса, увы…