Один из самых важных аспектов вашего сайта - это скорость его загрузки; пользователи хотят мгновенно получать картинку без всяких тормозов, и если вы не в состоянии дать им это, то они долго не раздумывая, поищут информацию в другом месте. В этой статье мы обсудим 5 способов, которые позволят вам ускорить время загрузки вашего сайта.
Зная количество времени, которое тратится на загрузку страниц, вы сможете определить проблемные места. Также это придаст вам ещё один стимул, для того чтобы залезть в функционал и постараться исправить ситуацию.
Перед тем как мы начнём, вам необходимо установить YSlow, если вы уже конечно этого не сделали. YSlow - это расширение к Mozilla Firefox, которое вы сможете найти на этой странице:
Теперь давайте откроем какой-то сайт. Допустим Six Revisions, для того чтобы данные у нас были примерно одни и те же (просто откройте данный сайт в новой вкладке вашего браузера).
В нижней правой стороне вашего браузера, у вас находится специальная панель с иконкой (смотрите рисунок 1). Чуть поодаль данной панели, после загрузки страницы, рядом с ‘YSlow’ вы увидите число. Данное число - это время загрузки данной страницы в секундах в вашем браузере. Нам необходимо, чтобы данное число было как можно меньше.
Самыми часто встречаемыми «тормозилами» являются следующие объекты или операции:
Через несколько минут мы подробнее на этом остановимся.
Для того чтобы освоиться в этой системе, пройдитесь по нескольким сайтам и посмотрите время их загрузки. Можете протестировать сайты Google, Facebook, и парочку ваших любимых блогов/сайтов, где вы чаще всего бываете. Обратите внимание, что больше всего на скорость влияют JavaScript файлы и изображения.
Помимо того что 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 - это файлы, которые уже были закэшированы браузером пользователя. Это означает, что их скачивать не нужно.
CSS спрайты - это наверное самая значительная вещь, которую придумало человечество, после того как Тесла изобрёл электричество… Я действительно это сказал.. ой, я имел в виду Эдисона.
Ну, может быть не совсем самая крутая, но тем не менее.
CSS спрайты могут помочь значительно увеличить скорость загрузки страницы, сократив количество HTTP запросов, которые формируются для загрузки изображений.
Вы можете найти множество уроков, в которых говорится о том, что CSS спрайты удобны для навигации - в общем, для использования их в пользовательском интерфейсе.
Теперь давайте быстренько посмотрим, как на YouTube используют CSS спрайты. Так выглядит спрайт, которым они пользуются:
YouTube использует этот файл довольно оригинально. Загружают они его как фон классу sprite. Когда возникает необходимость в выборе какого-то элемента, происходит выбор изначальной позиции при помощи CSS свойства background-position, а затем применение высоты и ширины.
Давайте и мы попробуем что-то подобное. Поэкспериментируем на этом же самом изображении с сайта YouTube.
В примере, который расположен ниже, мы выводим логотип YouTube на экран. Используя тот же класс sprite, и то же самое изображение image, мы можем создать изображение, которое будет изменяться при наведении мышки.
Таким образом, используя данное изображение, мы можем свести все подключения к одному HTTP запросу. Ну, как эффект?
Ещё одно преимущество CSS спрайтов заключается в том, что при применении псевдо класса:hover, изображение не будет пропадать на несколько мгновений (которые уходят на загрузку нового изображения), как это происходит без использования CSS спрайтов.
Для некоторых сайтов, урезание количества HTTP запросов может привести к нарушению функциональности. Ещё один способ увеличить скорость загрузки страниц - это поместить все подключения к JavaScript файлам в конец документа.
Стоит также отметить:
Если вы будете следовать нашему совету, то позволите вашим пользователям любоваться вашим сайтов, в то время как на втором плане будет происходить загрузка ваших JavaScript скриптов.
Примечание: Если вы не хотите перемещать теги JavaScript, потому что боитесь, что падёт функциональность, то я рекомендую вам использовать свойство defer. Применяйте его следующим образом:
Параллельная загрузка означает увеличение параллельных загрузок одних и тех же файлов. Пройдясь по множеству сайтов, вы можете заметить, что на многих из них запросы посылаются на static.domain.com и c1.domain.com. Это можно увидеть в нижней панели браузера.
Это отличный способ увеличить производительность сайта. При использовании поддоменов, по сути, информация будет находиться на одном и том же сервере, однако для браузера они будут разными.
Настройка процесса:
Некоторые сайты остаются нагруженными даже после применения всех методов, описанных выше. Но есть ещё пару методов.
Пользователь может зайти на ваш сайт и совершить все необходимые HTTP запросы для отображения страницы, изображений, скриптов и т.д.
Когда вы используете заголовки Expires, вы можете закэшировать все эти элементы на пользовательской машине, тем самым не только увеличив скорость загрузки страницы, а ещё и сократив трафик. Заголовки Expires могут быть применены ко всем вашим скриптам, CSS и изображениям.
Данного эффекта можно добиться посредством нескольких строк, которые вам нужно добавить в файл.htaccess, который находится в корневом каталоге вашего сайта.
Следующий пример.htaccess файла устанавливает заголовки expires на какое-то число в 2010 году для таких типов файлов как.ico, .pfd, .flv (файлы Flash), .jpg, .png, etc.
Будьте бдительны: если вы произведёте какое-либо изменение в данных файлах (в случае, если срок ещё не прошёл), то вам необходимо переименовать их (или добавить в название версию), иначе в кэше они не обновятся.
К примеру, если у вас есть файл JavaScript, в котором вы что-то изменили, просто добавьте в название номер версии (что-то типа javascriptfile-1.0.js, javascriptfile-1.1.js и т.д.)
Сегодня мы прошлись по многим способам. Надеюсь, вы отметили для себя несколько методов, которые будете активно применять в ваших проектах! Удачи!
Мы выпустили новую книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».
Нейл Патель выпустил статью о том, как увеличить скорость мобильного сайта.
Для чего это нужно: в 2014 году сайт Walmart загружался на мобильных устройствах 7 секунд, демонстрируя пользователям белый экран. За год Walmart сократил время загрузки страницы до 2.9 секунд. 4 секунды удалось срезать за счет сокращения барьеров, препятствующих загрузке: упрощения кода JavaScript, удаления медленных шрифтов, оптимизации изображений. Увеличение скорости на каждую секунду повышало конверсию сайта на 2%.
Плюс 2% только из-за того, что пользователь стал ждать открытия страницы меньше на 1 секунду. Это веский повод для проверки своего сайта. Даже если вам кажется, что он работает быстро, вполне может оказаться, что лишние секунды все-таки есть, и они воруют вашу прибыль. О том, как узнать, насколько быстрый ваш сайт, и как ускорить его при необходимости, рассказал Нейл Патель.
Ирина Винниченко
Контент-маркетолог SEMANTICA
Скорость загрузки сайта – важный параметр для продвижения в поисковых системах. Низкая скорость сокращает количество клиентов на сайтах услуг, продажи в интернет-магазинах, аудиторию блогов.
Есть несколько сервисов, которые помогут узнать скорость загрузки сайта. Не буду описывать их возможности, быстрее протестировать и на конкретном примере узнать, как работают сервисы, оценить плюсы/ минусы.
Подробнее о том, как определяется скорость загрузки сайта, можно почитать в статье Семантики .
В своих статьях я много говорю о важности мобильной оптимизации. Почему я придаю этому такое большое значение?
Потому что мобильный трафик – это реальность диджитал-мира. Сейчас он важнее десктопного трафика. 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, по-видимому, провели существенную работу для того, чтобы включить эту возможность по умолчанию. Почему так не могут поступить все остальные браузеры?)
Указанный список содержит мои мысли по увеличению скорости связи между браузером и сервером и может быть применен, в общем случае, ко многим сайтам не зависимо от того, как используется веб-сервер или язык разработки для написания сайта. Однако, к сожалению, все эти вещи делают довольно редко.
Хотя все советы направлены на уменьшения времени загрузки страницы, положительными побочными эффектами могут стать уменьшения трафика от сайта и уменьшения нагрузки на серверный процессор на просмотр одной страницы. Уменьшения затрат на ваш вебсайт при улучшении пользовательского восприятия ресурса должно быть веской причиной, чтобы потратить некоторое время на оптимизацию такого рода.
В Google Chrome, аналогично с иными браузерами ОС Windows, существует проблема, которая связана с тем, что после загрузки страницы на компьютере сохраняются некоторые скачанные файлы.
Со временем они начинают занимать слишком много места на жестком диске.
Производить отчистку куки нужно регулярно, несмотря на то, что все может быть в порядке. Сама процедура не занимает много времени, ведь в Гугл Хроме её осуществить очень просто.
Перед тем, как почистить кэш в Google Chrome на ОС Windows стоит разобрать, что он вообще собой представляют. Сам термин, кеш был взят из английского слова cashe. Оно обозначает тайник или место хранения. Также его часто называют «куки» из-за того, что это текстовые данные сайта, хранящийся на компьютере пользователя. Если отбросить технические детали, можно сказать, что такие своеобразные хранилища информации позволяют обеспечить быстрое открытие и отображение тех сайтов, на которых пользователь ранее уже заходил через хром.
По большому счету, такие хранилища являются прекрасным вариантом, позволяющим экономить ваш интернет-трафик. Так, например, после того, как вы посмотрели какой-либо ролик на определенном сайте, при повторном его просмотре не будет нужды еще раз его полностью загружать из сети. Дело в том, что алгоритмы браузера автоматически создают копию того видео и размещают его в память компьютера, создавая тем самым куки и кэш. Это также обеспечивает более оперативную загрузку.
Однако в этом случае есть и свои негативные стороны. К примеру:
Сама процедура является максимально простой. Прежде всего нужно запустить сам браузер через систему Windows. Теперь необходимо нажать сочетание клавиш Shift + Ctrl + Delete. Это является наиболее быстрым способом открыть куки браузера. Это можно сделать и иным путем. Для этого нужно найти в хроме кнопку входа в меню (она в последних версиях обозначается тремя точками, расположенные в столбик), она называется «Настройка и управление» и нажать.
В появившемся контекстном меню необходимо выбрать пункт «Настройки», после чего откроется вкладка со всеми доступными к изменениям параметрами. Опускаемся в самый низ страницы, где находится кнопка «Показать дополнительные настройки» и нажимаем её. Находим там раздел «личные данные», где будет нужно нажать на кнопку «Очистить историю».
Далее появиться окно, где можно будет почистить кроме необходимых хранилищ файлов, сохраненные данные истории загрузок, какие сайты посещались, а также информацию о паролях. Чтобы выбрать, что именно будет удалено нужно поставить рядом с конкретным пунктом галочку. После этого можно будет просто нажать кнопку «Очистить историю» и подождать, пока процедура завершится.
На этом процедура очистки файловых хранилищ информации браузера гугл хром через Windows заканчивается. Однако, стоит также сказать о том, что находясь в разделе настроек «Личные данные» можно указать периодичность удаления определенного типа сохраняемых данных в гугл хром. Это позволит сделать так, чтобы удалялись не все файлы, а только устаревшие и уже не актуальные. Также, стоит сказать, что куки и кеш имеют значительные отличия:
Также произвести удаление всех сохраненных файлов можно даже не заходя в хром. Для этого нужно будет открыть в Windows саму папку, где они храниться. Обычно, это можно сделать перейдя по адресу C:\Documents and Settings\Admin\Local Settings\Application Data\Google\Chrome\User Data\Default\Cache\ где «Admin» — это имя пользователя Windows.
Я думаю ни для кого не секрет, что скорость загрузки страницы влияет на множество факторов. Если кто-то не в курсе, то вкратце скажу следующее, что скорость загрузки влияет не только на то, дождется ли посетитель, когда загрузится Ваш сайт, но и на SEO оптимизацию. Ведь на сегодняшний день уже многие поисковые системы при ранжировании сайтов, начали учитывать скорость загрузки страницы. Поэтому чем быстрее будет грузиться Ваш сайт, тем больше посетителей Вы можете получить с поисковых систем, а, следовательно, и больше денег на этом заработать.
Поэтому в этой статья я решил собрать топ-10 советов о том, как же можно увеличить скорость загрузки веб-странички и сайта в целом. Статья не претендует на гениальность и рассчитана на новичков.
Итак, поехали:
1. Уменьшите количество HTTP-запросов
80% загрузки страницы ориентировано на загрузку компонентов страницы: скриптов, фотографий, файлов CSS, flash. Спецификация HTTP/1.1 советует, чтобы браузеры параллельно загружали не более 2-х компонентов веб-страницы с одного хоста. Уменьшив количество этих компонентов мы уменьшаем количество HTTP-запросов к серверу и как результат увеличиваем скорость загрузки страницы.
Но как уменьшить количество запросов к серверу не затрагивая внешний вид страницы?
2. Помещайте CSS файлы в начале страницы
Помещая подключение к css файлам в хедере страницы мы получаем постепенный рендеринг страницы, т.е. страница будет загружаться постепенно - сначала заголовок, потом лого наверху, навигация и т.д. – а это в свою очередь служит отличным индикатором загрузки страницы для пользователя и улучшает общее впечатление от сайта.
Если размещать CSS файлы внизу страницы, то это не позволяет многим браузерам рендерить страницу постепенно. Это объясняется тем, что браузер «не хочет» перерисовывать элементы, у которых после загрузки страницы может измениться стиль. Так что все свои CSS файлы всегда подключайте в верхней части страницы в секции HEAD.
3. Помещайте javascript в конец страницы
Помещая javascript-файлы вниз страницы мы позволяем браузеру загрузить страницу с контентом в первую очередь, а уже потом начать загрузку javascript-файлов. Если же Ваш сайт идет в ногу со временем и содержит все возможные интерактивные «примочки», то этих javascript-файлов может быть несколько и весить они могут несколько сотен килобайт, поэтому перед загрузкой страницы заставлять пользователя ждать пока загрузятся все Ваши javascipt-файлы губительно.
Кроме того, внешние.js-файлы блокируют параллельную загрузку. Спецификация HTTP/1.1 советует, чтобы браузеры параллельно загружали не более 2-х компонентов веб-страницы с одного хоста. Таким образом, если картинки для вашего сайта располагаются на разных хостах, вы получите более 2-х параллельных загрузок. А когда загружается скрипт, браузер не будет начинать никаких других загрузок, даже с других хостов.
4. Минимизируйте css и javascript
Минимизация файла - это удаление из кода всех несущественных символов с целью уменьшения объема файла и ускорения его загрузки. В минимизированном файле удаляются все комментарии и незначащие пробелы, переносы строк, символы табуляции. Здесь все просто. Чем меньше объем файла, тем меньше времени понадобится браузеру на его загрузку. А минимизировать Ваш код помогут вот эти 24 онлайн-сервиса для сжатия и оптимизации CSS кода
5. Используйте поддомены для параллельного скачивания
Как я уже говорил Выше, согласно спецификации HTTP/1.1 на браузеры накладываются ограничения на количество одновременно загружаемых компонентов сайта, а именно не более 2-х компонентов с одного хоста. Поэтому если на Вашем сайте много графики, то ее лучше вынести на отдельный поддомен или поддомены. Для Вас это будет один и тот же сервер, а для браузера – разные. Чем больше поддоменов Вы создадите, тем больше файлов браузер сможет одновременно загрузить и тем быстрее загрузится вся страница сайта. Вам остается лишь изменить адрес картинок на новый. Очень простой, но действенный способ.
6. Используйте кэш браузера
Кеширование становится крайне важным для современных веб-сайтов, которые используют обширное подключение JavaScript и CSS. Дело в том, что когда посетитель зашел на Ваш сайт в первый раз, то браузер выполнит загрузку всех javascript и css-файлов, также загрузит всю графику и флэш, однако правильно выставив HTTP-заголовок Expires, вы сделаете компоненты страницы кешируемыми. Таким образом, когда посетитель зайдет на Ваш сайт снова или перейдет на следующую страницу Вашего сайта, в кэше его браузера уже будут находится некоторые нужные файлы и браузеру не потребуется загружать их снова. Отсюда и выигрыш в скорости загрузки сайта.
Поэтому выставляйте HTTP-заголовок Expires везде, где только это возможно, на несколько дней или даже месяцев вперед. Для того, чтобы веб-сервер Apache отдавал соответствующие рекомендациям HTTP-заголовки Expires, необходимо добавить в файл.htaccess, находящийся в корневой папке сайта, следующие строки:
Данный фрагмент файла конфигурации Веб-сервера Apache проверяет наличие модуля mod_expires и, если модуль mod_expires доступен, включает отдачу HTTP-заголовков Expires, которые устанавливают срок хранения перечисленных выше объектов в кэше браузеров и прокси-серверов равный одному году с момента первой загрузки. Установив такой срок жизни кэша браузера, может возникнуть сложность с обновлением файлов. Поэтому если Вы изменили содержимое css или javascript-файла и хотите, чтобы эти изменения обновились в кэше браузера, то необходимо изменить название самого файла. Обычно в название файла добавляют его версию, например так: styles.v1.css
7. Используйте CDN для загрузки популярных JavaScript библиотек
Если на Вашем сайте используется популярный javascript фреймворк, например jQuery, то для его подключения лучше использовать CDN.
8. Оптимизируйте ваши изображения
Необходимо определять подходящий формат для ваших изображений. Выбор неверного формата изображения, может существенно увеличить размер файла.
Вот несколько онлайн сервисов для оптимизации изображений:
9. Не масштабируйте изображения
Не изменяйте размер изображения при помощи атрибутов width и height тега, либо при помощи CSS. Это тоже негативно влияет на скорость загрузки страницы. Если у Вас есть изображение размером 500x500px, а вставить на сайт Вы хотите изображение с размером 100x100px, то лучше изменить размер оригинальной картинки при помощи графического редактора Photoshop, или любого другого. Чем меньший вес картинки, тем меньше времени потребуется для её загрузки.
10. Используйте Gzip- сжатие
Как показали проведенные исследования, gzip-сжатие текстового файла «на лету» в 95–98% случаев позволяет сократить время на передачу файла браузеру. Если хранить архивированные копии файлов на сервере (в памяти proxy-сервера или просто на диске), то соединение в общем случае удается освободить в 3-4 раза быстрее.
Начиная с версии протокола HTTP/1.1, веб-клиенты указывают, какие типы сжатия они поддерживают, устанавливая заголовок Accept-Encoding в HTTP-запросе.
Accept-Encoding: gzip, deflate
Если веб-сервер видит такой заголовок в запросе, он может применить сжатие ответа одним из методов, перечисленных клиентом. При выдаче ответа посредством заголовка Content-Encoding сервер уведомляет клиента о том, каким методом сжимался ответ.
Content-Encoding: gzip
Переданные таким образом данные меньше первоначальных примерно в 5 раз, и это существенно ускоряет их доставку. Однако здесь есть один недостаток: увеличивается нагрузка на веб-сервер. Но вопрос с сервером всегда можно решить. Так что не будем обращать на это внимание.
Для того, чтобы включить GZIP-сжатие на своем сайте, необходимо в файле.htaccess прописать следующие строки кода:
Если данный способ сработал, то отлично, если нет, то можно попробовать вот такой вот код:
Но опять таки, данный код работает не на всех серверах, поэтому лучше обратиться в службу поддержки Вашего хостинг-провайдера и уточнить этот вопрос.
Ну вот собственно и все, что я хотел рассказать. В данной статье я постарался перечислить все основные способы клиентской оптимизации для увеличения скорости загрузки веб-страницы. Кроме клиентской оптимизации существует еще и серверная оптимизация. Но это уже тема для отдельной статьи.
Если что-то упустил или у Вас есть, что добавить – пишите свое мнение в комментариях ниже к этому посту. Спасибо за внимание!
Ключевые слова:алгоритмсвойства алгоритма дискретностьпонятностьопределённостьрезультативностьмассовость исполнитель характеристики исполнителя круг решаемых задачсредарежим работысистема команд формальное исполнение алгоритма 3.1.1. Понятие алгоритма Каж
Ярлыки листов текущей книги табличного редактора Microsoft Office Excel по умолчанию отображаются у левого нижнего края окна. Если их там нет, причин может быть несколько - от чисто технических, до связанных с соблюдением повышенной конфиденциальности дан
Ошибочно заблокировали или временно отключили? Свяжитесь с нами, и мы вам поможем. Мы блокируем игроков, которые нарушают наше . Если мы заблокируем или временно отключим вашу учетную запись EA, определенную игру или устройство, мы отправим вам электронн
Заблокировали Инстаграм за нарушение правил - что делать? Этот вопрос часто возникает у пользователей, подвергшихся временной блокировке. В большинстве случаев она вызвана нарушением нестрогих, но обязательных правил. Иногда на телефон приходит уведомлени
Игра World of Tanks во многих рейтингах, и достаточно часто у игроков возникают проблемы со скоростью соединения с игрой. Используя данную статью вы сможете понизить пинг в игре WoT, чем уменьшите количество лагов и в разы ускорите загрузку карт и FPS. На