Як можна зменшити витрати на завантаження великих бібліотек JS?


23

Якщо я використовую велику бібліотеку Javascript для своєї сторінки, як я можу переконатися, що це не погіршує використання веб-сайту користувачем?

Відповіді:


25

Можна зробити 4 речі.

  1. Мінімізуйте файл JS. Це видаляє всі коментарі та пробіли, щоб зменшити його розмір.
  2. Комбінуйте свої файли JS на кожній сторінці, щоб було лише 1 файл.
  3. Використовуйте пакет, щоб отримати файли, коли ви надсилаєте їх. Це зробить їх ще меншими
  4. Поставте Javascript, який не потрібен відразу внизу сторінки, щоб він завантажувався в кінці. Це дозволить користувачеві бачити та використовувати сторінку ще до повного завантаження JS.

І деякі інші люди підказали:

  • Apache автоматично обробляє стиснення (та кешування стисненого вмісту), що значно спрощує управління файлами
  • Направлення JavaScript належним чином кешуватиме користь.
  • Доменні підстановки (з декількома URI) дозволять отримати більше одночасних з'єднань. Попереднє отримання не лише для зображень /

Ви можете зробити більше речей і кращі способи зробити це. Apache автоматично обробляє компресію (та кешування стисненого вмісту), що значно спрощує управління filse. Здійснення належного кешування javascript принесе великі переваги. Підстановочні домени (з декількома URI) дозволять отримати більше одночасних з'єднань. Попередній
вибір

21

Якщо ви використовуєте загальні бібліотеки (наприклад, jQuery, Prototype або Dojo), ви можете завантажити файл у Google і змусити їх обслуговувати , це дає кілька переваг:

  • Вам не доведеться турбуватися про мінімізацію та блискавку тощо
  • Це не ваша пропускна здатність
  • Ці файли надходять з іншого домену, тому ви можете (принаймні частково) подолати ліміт у 2 паралельних запити на ім’я хоста
  • Якщо вам пощастило, користувач уже відвідав якийсь інший сайт, який використовував ту саму бібліотеку від того самого постачальника, тож він уже є у кеші браузера.

Примітка. Версія, яку ви запитуєте, може мати великий вплив на характеристики кешування: запит на jQuery 1.4.2 надасть вам файл, який можна кешувати протягом року, але 1.4 можна кешувати лише протягом години.


1
+ 1 для CDN, і scriptsrc.net , щоб зробити його ще простіше;)
акос

1
Чи можете ви розширити свою "замітку"? Чому є різниця у часі кешування?
theycallmemorty

2
@theycallmemorty: Хоча я не перевіряв документи, я припускаю, що це тому, що, вказуючи 1.4.2, ви дуже конкретно ставитесь до потрібної версії, а просити 1.4 ви в основному говорите "дайте мені найбільше остання версія під 1.4 ", тому вони не кешують її так сильно.
Джаф - Бен Дюгід

Також варто відзначити, що Microsoft робить деякі бібліотеки JS (jQuery та деякі MS-специфічні) доступними на своєму CDN, який також підтримує https (який багато інших CDN-скриптів не підтримують) asp.net/ajaxlibrary/cdn.ashx
Bert Lamb

6

Ви можете помістити всю бібліотеку в один js-файл і стиснути файл. Однак це дійсно має значення лише для першого завантаження сторінки. Після цього ваш файл js буде кешований у веб-переглядачі, зокрема, якщо ви встановите термін дії кешу досить довго. Отже, будь-яке поспішне звернення більше не завантажуватиме ваш js-файл.


+1, ви можете помістити всю бібліотеку в один файл і стиснути її. Не думав про це.
Гордон Густафсон,


0

Якщо у вас є кілька елементів сторінки та доступ до окремого домену, ви можете розглянути можливість розміщення всіх статичних файлів, включаючи великий JS-файл на другому домені.

Як зазначає Стів Суудерс у своєму блозі про високоефективні веб-сайти -

... в деяких ситуаціях варто взяти купу ресурсів, які завантажуються в один домен, і розділити їх на кілька доменів. Я називаю цей домен різким. Це дозволяє паралельно завантажувати більше ресурсів, скорочуючи загальний час завантаження сторінки.

в іншому місці він пише ..

Браузери відкривають обмежену кількість з'єднань на домен ... Розщеплення або розшифровка запитів на два домени, на відміну від одного домену, призводить до швидшої сторінки, особливо в IE 6 і 7

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.