У меня есть несколько вопросов по поводу атрибутов async
и defer
для <script>
тега , который к моему пониманию работы только в HTML5 браузеров.
На одном из моих сайтов есть два внешних файла JavaScript, которые в данный момент находятся над </body>
тегом; во-первыхJQuery Источник от Google, а второй является локальным внешним скриптом.
С учетом скорости загрузки сайта
Есть ли какое-то преимущество в добавлении
async
к двум сценариям, которые у меня есть внизу страницы?Будет ли какое-то преимущество в добавлении
async
опции к двум сценариям и размещении их в верхней части страницы в<head>
?- Означает ли это, что они загружаются при загрузке страницы?
- Я предполагаю, что это вызовет задержки для браузеров HTML4, но ускорит ли это загрузку страниц для браузеров HTML5?
С помощью <script defer src=...
- Повлияет ли загрузка двух скриптов внутри
<head>
с атрибутом такdefer
же, как и ранее</body>
? - Еще раз я предполагаю, что это замедлит работу браузеров HTML4.
С помощью <script async src=...
Если у меня есть два сценария с async
включенным
- Будут ли они загружать в то же время?
- Или по одному с остальной частью страницы?
- Порядок сценариев становится проблемой? Например, один сценарий зависит от другого, поэтому, если один загружается быстрее, второй может выполняться некорректно и т. Д.
Наконец, лучше ли мне оставить все как есть до тех пор, пока HTML5 не станет более распространенным?
defer
это то же самое, что размещать скрипты в нижней части HTML, что было обычным явлением на протяжении многих лет.
async
является новым (ish), ноdefer
был частью IE начиная с IE4.defer
был добавлен в другие браузеры гораздо позже, но старые версии этих браузеров, как правило, гораздо меньше.