У мене є кілька питань по приводу атрибутів 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
було додано до інших браузерів набагато недавно, але старіші версії цих браузерів, як правило, зависають набагато менше.