Страница с 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
В 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