Страница с JavaScript сильно тормозят при загрузке. Как исправить скорость загрузки сайта

Способ ускорить загрузку веб-станиц сайта путем оптимизации js файлов и html кода страницы, какие директивы надо прописать для молниеносной работы сайта

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

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

Когда браузер считывает html-код, он отображает результат последовательно. Т.е. каждая строка идет друг за другом, но в месте, где установлен javascript происходит остановка – с этой проблемой приходилось, безусловно, сталкивались те, кто использует этот язык для написания ресурсов.

Решение проблемы — асинхронная загрузка. Просто разместите javascript в конце html-кода страницы. Это приведет к тому, что загрузка «явы» будет отдалена по времени, обеспечивая корректное отображение страницы и быстрый страт для пользователей ресурса. На асинхронную загрузку переходят большинство серьезных ресурсов, старающихся сохранить аудиторию и внедрить полезное нововведение.

Разберем несколько способов оптимизации загрузки javascript.

Синхронная загрузка скрипта

Такая загрука javascript-файла осуществляется следующим образом:

<script src="//www.адрес_сайта/script.js" type="text/javascript"></script>

Асинхронная загрузка javascript на HTML5

HTML5 предусмотрительно озаботился проблемой загрузки страницы с «явой». В нем есть возможность установить асинхронную загрузку скрипта, что увеличивает скорость отображения ресурса в разы. Для этого в html-код следует добавить параметры async или defer, как это указано ниже:

<script async src="//www.адрес_сайта/script.js" type="text/javascript"></script>
<script defer src="//www.адрес_сайта/script.js" type="text/javascript"></script>

В чем разница между атрибутами async и defer?

Оба параметра работают с асинхронной загрузкой javascript. Различие состоит во времени отображения и начале выполнения работы скрипта.

Атрибут async запустит скрипт сразу же, после полной загрузки, но при этом пропустит загрузку window.

При установке в код страницы атрибута defer — javascript встанет в очередь между другими скриптами, не нарушая их порядок выполнения. Он начнет работу только после полной загрузки страницы, но пропустит событие DOMContentLoaded (объект document).

Однако, данные атрибуты не работают в некоторых современных браузерах. Так, например, InternetExplorer не поддерживает атрибуты async и defer. А строки document.write ничем не помогут в файлах script.js

Специальный скрипт от Google для асинхронной загрузки javascript

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

Чтобы применить данный скрипт, просто заменяем

<script src="...">

на

<script extsrc="...">

Затем подключаем файл скрипта extsrc.js

Получаем следующий код:

<script src="//extsrcjs.googlecode.com/svn/trunk/extsrc.js"></script>
<script extsrc="...."></script>

К сожалению, этот способ тоже не подойдет к файлам с document.write

Оптимальная асинхронная загрузка javascript

Этот способ подойдет для всех браузеров без исключения и работает даже с document.write

Ускоряем загрузку страниц с JavaScript

В html-коде страницы создаем пустой div-блок:

<div id="script_block" class="script_block"></div>

А в конце html-кода, перед

</body>

, вставляем скрипт для асинхронной загрузки:

<div id="script_ad" class="script_ad" style="display:none;">
Здесь любой файл или скрипт, который нужно загрузить.</div>
 
<script type="text/javascript">
   // переместить его в реальную позицию отображения
   document.getElementById('script_block').appendChild(document.getElementById('script_ad'));
   // показать
   document.getElementById('script_ad').style.display = 'block';
</script>

Обратите внимание, что в версиях IE ниже 6-ой, включительно, такая загрузка не работает. Но я не уверен, что такие пользователи остались — их меньшинство. Другие браузеры и сервисы используют данную оптимизацию для javascript, что отражается лучшим образом на скорости загрузки ресурсов.

Хостинг и VPS которые никогда не тормозят

Рекомендую самый быстрый VPS на немецких серверах за разумные деньги — FastVPS

Этот материал впервые был опубликован 2 мая 2017 года. Актуальность информации подтверждена 16 января 2024 году.