Иван @ishamshur read-only
Пользователь
29 января 2012 в 20:18

Разработка → Топ-10 советов о том, как увеличить скорость загрузки страницы

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

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

Итак, поехали:

1. Уменьшите количество HTTP-запросов

80% загрузки страницы ориентировано на загрузку компонентов страницы: скриптов, фотографий, файлов CSS, flash. Спецификация HTTP/1.1 советует, чтобы браузеры параллельно загружали не более 2-х компонентов веб-страницы с одного хоста. Уменьшив количество этих компонентов мы уменьшаем количество HTTP-запросов к серверу и как результат увеличиваем скорость загрузки страницы.

Но как уменьшить количество запросов к серверу не затрагивая внешний вид страницы?

На самом деле есть несколько способ.
  • Использование CSS-спрайтов. CSS-спрайт – это комбинированное изображение, которое содержит в себе несколько маленьких изображений, которые в нужный момент для нужного элемента страницы вырезаются используя свойства: background-image и background-position.
  • Использование Inline-картинок. Inline-картинки используют URL-схему data: для встраивания картинки в саму страницу. Это, однако, увеличит размер HTML-документа. Встраивая inline-картинки в ваши таблицы стилей вы добьетесь уменьшения запросов к серверу, а размер HTML останется прежним.
  • Объединение нескольких файлов в один. Если у Вас на страничке подключается больше одного css- или js-файла, то Вы можете объединить их в один. Это очень простой, но действенный способ уменьшения количества http-запросов на сервер. О том, как это делать на лету я писал в своей заметке здесь «Разгони свой сайт. Статическое сжатие css- и js- файлов на лету»


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, находящийся в корневой папке сайта, следующие строки:
<IfModule mod_expires.c>

Header append Cache-Control "public"

FileETag MTime Size

ExpiresActive On

ExpiresDefault "access plus 0 minutes"

ExpiresByType image/ico "access plus 1 years"

ExpiresByType text/css "access plus 1 years"

ExpiresByType text/javascript "access plus 1 years"

ExpiresByType image/gif "access plus 1 years"

ExpiresByType image/jpg "access plus 1 years"

ExpiresByType image/jpeg "access plus 1 years"

ExpiresByType image/bmp "access plus 1 years"

ExpiresByType image/png "access plus 1 years"

</IfModule>

Данный фрагмент файла конфигурации Веб-сервера Apache проверяет наличие модуля mod_expires и, если модуль mod_expires доступен, включает отдачу HTTP-заголовков Expires, которые устанавливают срок хранения перечисленных выше объектов в кэше браузеров и прокси-серверов равный одному году с момента первой загрузки. Установив такой срок жизни кэша браузера, может возникнуть сложность с обновлением файлов. Поэтому если Вы изменили содержимое css или javascript-файла и хотите, чтобы эти изменения обновились в кэше браузера, то необходимо изменить название самого файла. Обычно в название файла добавляют его версию, например так: styles.v1.css

7. Используйте CDN для загрузки популярных JavaScript библиотек

Если на Вашем сайте используется популярный javascript фреймворк, например jQuery, то для его подключения лучше использовать CDN.

CDN (Content Delivery Network) — это множество веб-серверов, разнесенных географически для достижения максимальной скорости отдачи контента клиенту. Сервер, который непосредственно будет отдавать контент пользователю, выбирается на основании некоторых показателей. Например, выбирается сервер с наименьшим числом промежуточных хопов до него либо с наименьшим временем отклика. Кроме того браузер кэширует javascript-файлы, и если Вы посещали сайты на котором используется такой метод, то эта библиотека уже есть в кэше Вашего браузера, и он не будет загружать её снова.

Одним из таких CDN – является Google Libraries. Это CDN для популярных open-source JavaScript библиотек. Загрузка популярных javascript фреймверков с Google Libraries позволяет увеличить скорость загрузки страницы и снизит траффик на ваш сервер.

О том как загружать jQuery с репозитория Google я писал вот в этой заметке «Увеличиваем скорость загрузки страницы загружая jQuery с репозитория Google».

8. Оптимизируйте ваши изображения

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

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

Вот несколько онлайн сервисов для оптимизации изображений:


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 прописать следующие строки кода:
<IfModule mod_deflate.c>

AddOutputFilterByType DEFLATE text/html

AddOutputFilterByType DEFLATE application/javascript

AddOutputFilterByType DEFLATE text/javascript

AddOutputFilterByType DEFLATE text/css

<IfModule mod_setenvif.c>

BrowserMatch ^Mozilla/4 gzip-only-text/html

BrowserMatch ^Mozilla/4\.0[678] no-gzip

BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

</IfModule>

 </IfModule>


Если данный способ сработал, то отлично, если нет, то можно попробовать вот такой вот код:

<IfModule mod_deflate.c>

AddOutputFilterByType DEFLATE text/html text/plain 

text/xml application/xml application/xhtml+xml 

text/javascript text/css application/x-javascript

BrowserMatch ^Mozilla/4 gzip-only-text/html

BrowserMatch ^Mozilla/4.0[678] no-gzip

BrowserMatch bMSIE !no-gzip !gzip-only-text/html

<ifmodule mod_gzip.c>

mod_gzip_on Yes

mod_gzip_item_include file \.js$

mod_gzip_item_include file \.css$ 

</ifmodule>

 </IfModule>


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

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

Если что-то упустил или у Вас есть, что добавить – пишите свое мнение в комментариях ниже к этому посту. Спасибо за внимание!
Иван @ishamshur
карма
3,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (61)

  • +1
    «Как показали проведенные исследования...», — proof в студию. Правда интересно. Я думал, что это сжатие как таковое не имеет большого влияние на быстродействие.
    • –2
      Это верно. Сжатие хоть и позволяет уменьшить объем файла в несколько раз, но ведь 80% времени тратится на загрузку статики. Поэтому на общем фоне это и не заметно.
      • 0
        При первой загрузке да.
        Все последующие загрузки статику уже не грузят.
    • +21
      Согласно проведённых исследований, ученые доказали, что большинству достаточно ссылки на ученых или исследования, поэтому проводить эти самые исследования этим самым ученым нет нужды.
    • +7
    • 0
    • 0
      «Как показали проведенные исследования...» — Читайте между строк. Пособие по чтению — «Физики продолжают шутить».«Инструкция для читателя научных статей». Издательство «Мир», Москва, 1968.
  • +4
    К слову, в Webkit-браузерах (Хром, Сафари) есть замечательная встроенная штука, которая может многое из перечисленного рассказать о странице:
    Developer Tools->Audits (в русской версии Проверки)
  • +32
    И сколько можно мусолить одно и то же…
    • +2
      А как же кармы надрочить?
      • НЛО прилетело и опубликовало эту надпись здесь
        • +2
          Так это еще ж и писать надо!
          Легче взять статью про сколько то классных методов деланья чего либо, поменять местами порядок методов, пару выкинуть и получиться новый контент!
    • 0
      Забавно, а почему >550 человек добавили этот пост в избранное, если это уже >100 раз обсуждалось и все всё об этом знают?
  • +7
    А тут больше советов ;) То ли вы не полностью перевели, то ли перевели статью, которую не польностью скопировали, то ли скопировали статью, которую не полностью перевели %)
    • +2
      Так это перевод… А то, думаю, почему говоря о CDN для библиотек javascript автор не упоминает Яндекс, который тоже предоставляет такую услугу как хостинг javascript библиотек? (Кстати, у Яндекса, вроде, больше библиотек).
      • 0
        Ну это не совсем и перевод. Кое что конечно взято из этой статьи, кое что добавил от себя. Не судите строго, если что-то не так!
      • 0
        И Microsoft тоже
        • 0
          И (оглядывается) Google.
  • +1
    > 9. Не масштабируйте изображения
    > Не изменяйте размер изображения при помощи атрибутов width и height тега, либо при помощи CSS.

    Стоит отметить, что указывать фактические размеры изображений нужно обязательно, иначе по мере загрузки страницы она как бы прыгает. Это происходит из-за того, что браузер предполагает какие-то размеры картинки по-дефолту, а потом они оказываются другими.
    Выглядит очень непрофессионально, криво и вообще жутко раздражает.
    • 0
      А есть варианты, для столь тяжелых сайтов, отображения после полной загрузки, перед этим показываем прелоадер или другую информацию с пояснение что сайт загружает, как у сайтов на flash и при входе в гмэил (как они это делают)? Понятно, что это костыль и надо сразу делать хорошо, но всё же.
      • 0
        Называется LazyLoad.
        Есть у меня такая страничка с сотней картинок
        tigor.org.ua/battlefield-3-dog-tags/

        Вот пару дней назад сделал LazyLoad и скорость сильно изменилась.
        g.tigor.org.ua/google_analytics/page-speed.png
        • 0
          Собственно ссылку на него я ниже и давал
          • 0
            Вы дали ссылку на отложенную загрузку рекламы, а не изображений.
            • 0
              А точно, прошу прощения. Хотел побыстрому дать сслыку и не туда дал. Вот правильная ссылка www.appelsiini.net/projects/lazyload
  • –1
    Если я правильно Вас понял, то посмотрите вот этот плагин jqueryad.web2ajax.fr
  • 0
    Мне очень понравился www.kraken.io/ — если по простому — может изображения с сохранением директорий сжать и остается только выгрузить папку на сервер)

    Вопрос кстати, про поддомены — на обычном хостинге можно как-то сделать чтобы физически папка располагалась на одном домене — site.ru/photo но при этом была доступна через new.site.ru/photo?

    На ум приходит редирект, но это думаю неверно, может жесткие ссылки как-то можно делать или как они там называются
    • 0
      Если под обычным хостингом понимается шареный Apache, то сделайте new.site.ru алиасом для site.ru, при этом не забудьте в .htaccess закрыть остальные папки (кроме /photo), дабы не получить дубликат сайта в поисковиках.
      • 0
        символьные ссылки мне помогли, результат не оценил пока)
    • 0
      На моем хостинге, к примеру, можно сделать директорию img и в сделать субдомен img.domain.com, который будет обращаться к директории img.

      Тогда путь к файлу 01.jpg может быть представлен двумя способами:
      1) /img/01.jpg
      2) img.domain.com/01.jpg

      Думаю на других хостингах это тоже возможно.
      • 0
        Можно наделать субдоменов и ссылать их все в одну папку, тогда будет вообще круто

        domain.com/img/01.jpg
        img.domain.com/img/01.jpg
        cdn.domain.com/img/01.jpg
        static.domain.com/img/01.jpg
        gallery.domain.com/img/01.jpg
  • 0
    >Вопрос кстати, про поддомены — на обычном хостинге можно как-то сделать чтобы физически папка >располагалась на одном домене — site.ru/photo но при этом была доступна через new.site.ru/photo?

    Зачем?
    • 0
      По статье пункт 5 хочу попробовать
      • +1
        Symbolic link или сделать new.site.ru синонимом (в Apache это ServerAlias) site.ru.
  • +4
    Америка не открыта.
    Одному мне это кажется прописными истинами клиентской оптимизации?
    • 0
      А никто и не говорил, что это статья претендует на гениальность. Я просто старался собрать в единое целое, основные способы клиентской оптимизации со своими комментариями
  • +2
    Столько стараний, чтобы напихать в статью кучу ссылок на очередной «Инфо-бизнес блог»
    • –6
      Почему напихать?! Если статьи на блоге, как раз дополняют тему, то почему бы и нет?
    • +2
      ну сео же там, ссылка индексируемая, всё такое…

      Как правильно заметили – таких статей мильён уже, писать миллионпервую не стоило
      • –1
        ну и что? Почему я не могу дать ссылку на статью на своем блоге, если она раскрывает более подробно данную тему? В чем тут криминал, чтобы минусовать? Или надо было все в одной статье описывать?
  • +4
    Если кому-то вдуг эти банальные советы стали откровением, я хочу посоветовать замечательный ресурс, одно время пиарившийся в хорошем смысле слова на Хабре: webo.in. А в особенности раздел webo.in/articles/ (там же есть ссылки на книги автора).
  • 0
    > Помещайте CSS файлы в начале страницы
    >… служит отличным индикатором загрузки страницы для пользователя и улучшает общее впечатление от сайта.

    В одной из подобных статей (по моему тут же на хабре) рекомендовали наоборот css файлы помещать в конец страницы, с причиной, что при этом стили накладываются на документ разом, а если вставлять в начало, то будет происходить (многоразовая) перерисовка стилей, по мере подгрузки/построения документа при этом тратиться больше ресурсов/времени.
  • 0
    Недавно задался вопросами быстрой загрузки и нашел пару инструментов, которые оценивают качество страницы по параметрам приведённым в статье и некоторым другим (например слишком большой размер favicon)

    В варианте для FireFox обе программы — плагины для FireBug (есть варианты и для всех современных браузеров!).

    Это YSlow ( developer.yahoo.com/yslow/ ) и Google Page Speed ( code.google.com/speed/page-speed/download.html )

    Для открытого сайта проверяют массу параметров скорости, составляют рекомендации по кешу, показывают список неоптимизированных картинок и процент выигрыша в случае оптимизации и т.д.
  • 0
    Обычно в название файла добавляют его версию, например так: styles.v1.css

    Можно просто добавлять? номер_версии, например: styles.css?1, номер версии можно брать как номер коммита в репозитории.

    Одним из таких CDN – является Google Libraries. Это CDN для популярных open-source JavaScript библиотек. Загрузка популярных javascript фреймверков с Google Libraries позволяет увеличить скорость загрузки страницы и снизит траффик на ваш сервер.


    У Яндекса тоже есть отличная CDN: api.yandex.ru/jslibs/
    • 0
      > Можно просто добавлять? номер_версии, например: styles.css?1, номер версии можно брать как номер коммита в репозитории.

      Не вполне.

      Указывая styles.v1.css и styles.css?1 вы получите разное поведение браузера в случаях еcли пользователь нажмет f5.

      Откройте тот же фаербаг в фаерфоксе или аналогичный инструмент в хроме и посмотрите как они перегружают файлы в обоих случаях, именно при реакции на нажатие f5.

      • 0
        GET application.js?1327152543 304 Not Modified
        Так в чем разница реакций? Если изменить номер, то он принудительно загрузит тот файл, т.к. будет считать его новым.
        • 0
          А вот чуть больше:

          самый первый раз:
          GET /test/ 200 OK
          GET styles.css 200 OK
          GET styles.v1.css 200 OK
          GET styles.css?1 200 OK

          f5:
          GET /test/ 304 Not Modified
          GET styles.css 304 Not Modified
          GET styles.v1.css 304 Not Modified
          GET styles.css?1 304 Not Modified

          модифицировали styles.css:
          GET /test/ 200 OK
          GET styles.css 200 OK
          GET styles.v2.css 200 OK
          GET styles.css?2 200 OK

          f5:
          GET /test/ 304 Not Modified
          GET styles.css 304 Not Modified
          GET styles.v2.css 304 Not Modified
          GET styles.css?2 304 Not Modified

          просто сменили версию:
          GET /test/ 200 OK
          GET styles.css 304 Not Modified
          GET styles.v4.css 200 OK
          GET styles.css?4 200 OK

          f5:
          GET /test/ 304 Not Modified
          GET styles.css 304 Not Modified
          GET styles.v4.css 304 Not Modified
          GET styles.css?4 304 Not Modified
  • 0
    Насчёт использования CDN — стоит напомнить, что никто не может гарантировать 100% аптайм. И если однажды один из контент-провайдеров CDN будет недоступен, тогда и все сайты, подключающие скрипты с его веб-серверов, будут работать некорректно (не говоря уже о скорости загрузки).
    • 0
      Я в хелпе вычитал, что в случае недоступности запросы перебрасываются на ближайший доступный сервер.
    • 0
      Обычно доступность CDN'а намного лучше, чем uptime сайта, который пользуется этим CDN.
    • +1
      Когда ваш сайт лежит — кому нужны библиотеки на CDN? А когда лежит CDN, а ваш сайт нет, то какой смысл в неоткрывающихся библиотеках?
      • 0
        Например, можно делать так:
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
        
        <script type="text/javascript">
        window.jQuery || document.write('<script type="text/javascript" src="js/jquery-1.6.2.min.js"><\/script>');
        </script>
        

        тогда если библиотека не загрузится с CDN, то она загрузится с Вашего сайта
  • 0
    > 5. Используйте поддомены для параллельного скачивания.
    С этим надо аккуратно и смотреть по своей задаче и обстоятельствам, так как лишние поддомейны добавляют лишние запросы на DNS, который тоже может негативно сказаться на загрузке.
    • 0
      И ещё ломается keep-alive связь если идёт новые поддомен, что тоже несколько может повредить общей скорости.
  • +1
    Всё это было уже тут.
  • 0
    Все эти советы вместе с оценкой показывает YSlow плугин для лисы.
    Да и GooglePageSpeed, или как его. Сразу указывают на узкие места и дают рекоммендации
  • 0
    топ10 не такой, а:
    1) gzip для всего, что шевелится
    2) cache для всего, что не динамика
    3) оптимизация изображений / устранение их масштабирования
    4) объединение файлов (css/js/img), data:URI можно применять уже после отрисовки
    5) css-файлы перед JS (строго)
    6) Отложенная загрузка JS-виджетов
    7) Параллельная загрузка изображений
    8) Кэширование динамических страниц/блоков на сервере
    9) Минимизация CSS/JS/HTML
    10) Устранение избыточного DOM-дерева / оптимизация CSS-селекторов
  • 0
    В последнее время значительное количество сайтов имеет одну и ту же проблему связанную с очень большим количеством внешних JS файлов. Я имею ввиду JS cниппеты для контекстной рекламы, различных сервисов Яндекса и Гугла, кнопки социальных сетей, счётчики и т.д. Есть сайты, у которых кол-во внешних http запросов составляет 100 и больше…
    Типичная ситуация: Сайт проектируется с учётом требований к производительности. Принимаются специальные меры по уменьшению времени загрузки страницы, устанавливаются различные модули для кэширования, покупается дорогой хостинг. Вроде всё ОК, при запуске сайт «летает». Однако, потом начинается наполнение сайта различной JS хренью в угоду SEO и маркетингу. В результате сайт начинает тормозить. Особенно при медленном интернет соединении.
    При этом многие владельцы таких сайтов не понимают почему это происходит. Меняют хостинг, нанимают программистов для того, чтобы разогнать «тормознутый» движок и т.д.

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