Скрипты делают сайт интерактивным, но если их разместить неправильно, страница грузится медленно, а поисковики ругаются. Давайте разберём, где ставить <script>
, какие атрибуты использовать и как не испортить пользователю опыт.
<script>
Самый простой способ – вставить скрипт в конец <body>
. В этом месте HTML уже отрисован, и браузер не останавливает построение страницы, пока ждёт загрузку кода. Если скрипт нужен только для аналитики или рекламных пикселей, именно туда его кладут.
Если скрипт критически важен для первого рендеринга (например, меняет структуру DOM до того, как пользователь увидит страницу), его помещают в <head>
. Но в этом случае обязательно добавить атрибуты async
или defer
, иначе загрузка будет блокировать всё остальное.
async
и defer
: в чём разницаasync
заставляет браузер загрузить файл параллельно, а выполнить сразу, как только он готов. Это удобно для независимых скриптов – аналитика, чаты, соц‑кнопки. Если скрипт меняет DOM до его полной загрузки, async
может вызвать ошибки.
defer
также загружает файл параллельно, но откладывает исполнение до готовности всего DOM. Это идеальный вариант для большинства библиотек и собственного кода, который влияет на структуру страницы.
Запомните правило: если скрипт нужен после полной загрузки HTML, ставьте defer
. Если он работает сам по себе, без доступа к DOM, используйте async
.
Пример правильного подключения:
<script src="/js/main.js" defer></script>
<script src="https://www.google-analytics.com/analytics.js" async></script>
Еще один лайфхак – объединять несколько небольших файлов в один. Меньше HTTP‑запросов = быстрее. Если объединять нельзя, включайте кэш‑заголовки, чтобы браузер хранил скрипт между визитами.
Не забывайте проверять, какие скрипты действительно нужны. Часто на страницах находятся “мертвые” коды, оставшиеся после экспериментов. Удалите их – уменьшите размер страницы и ускорите загрузку.
Если вы используете модульный загрузчик (например, RequireJS или ES‑модули), разместите их в head
без атрибутов, а сами модули будут загружаться асинхронно.
Наконец, проверяйте результат в инструментах браузера: вкладка «Network» покажет, сколько времени тратит каждый скрипт. Если какой‑то файл грузится слишком долго, подумайте о переносе его в конец body
или о использовании CDN.
Следуя этим простым правилам, вы избавитесь от “тормозных” скриптов, улучшите SEO и сделаете сайт приятнее для пользователей.