Чому у браузерах не встановлено jQuery?


19

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

Таким чином мільйони разів на день завантаження jQuery можна було запобігти. Або з власних веб-сайтів людей, або з CDN.

Все, що було б дійсно потрібне, це якесь таке твердження, як:

 <!--[if jQuery gt 11]>

Чи існує щось, що допоможе мені завадити користувачам здійснити поїздку до CDN, якщо вони вже мають jQuery у своєму кеші з іншого сайту?


3
питання - чому користувачеві потрібно робити нові завантаження з сайтів або CDN для чогось, що він уже має? jQuery подається з багатьох місць та в багатьох версіях. Мене турбує швидкість сторінки, а користувачів турбує (особливо мобільний) пропускна здатність. Якщо для бібліотеки є золотий стандарт - то чому б не використовувати його? Є інші приклади, напевно, і я б хотів їх також привітати, якщо існує узгоджений стандарт (наприклад, номер версії).
користувач1914292

27
Чому jQuery, але не Angular, MooTools, Underscore, ...? І які версії кожного? Чи повинні браузери містити копії кожної бібліотеки JavaScript, яку коли-небудь виготовляли?
користувач253751

15
"Вибачте, ви не можете користуватися моїм веб-сайтом, поки не оновите на 0,1 версію свого веб-переглядача"
VLAZ


4
для цього робиться кешування. інакше обробка версій в основному неможлива
njzk2,

Відповіді:


55

Якщо ви обслуговуєте jQuery з популярних CDN, таких як розміщені бібліотеки Google або cdnjs , він не буде повторно завантажений, якщо ваш відвідувач був на сайті, на який він посилався з того самого джерела (до тих пір, поки кешована версія не закінчилася).

jQuery - популярна бібліотека, як ви кажете, але зв’язування її з браузером, швидше за все, не відбудеться з кількох причин:

  1. jQuery порівняно невеликий (порівняно з бібліотеками, які іноді вбудовуються в браузери, як Flash). Найбільші вузькі місця на середньому веб-сайті навряд чи пов’язані із завантаженням jQuery.
  2. Удосконалення JavaScript / ECMAScript означають, що розробникам все частіше не потрібно залежати від jQuery. (Див. Youmightnotneedjquery.com .)
  3. Існує велика кількість інших популярних бібліотек JavaScript. Браузери не розроблені як сховища для коду JavaScript. Відстеження популярності скриптів, викидання менш популярних бібліотек та оновлення всього актуального можливо краще залишити веб-розробникам окремих сайтів.

Я розумію це, але зараз я використовую code.jquery.com як CDN. Однак, коли інший веб-сайт використовує googleapis або cdjns, браузер ПРОТИ завантажить jQuery з цього іншого CDN. Це просто не має сенсу і коштує багато часу / пропускної здатності всюди. Якщо до цього додати, що в більшості випадків людям подобається щось на кшталт jQuery1.7 +, то це стає ще гірше. Я розумію, що Ваша думка щодо того, що браузери не є сховищами, але чи не змогли б ми створити якесь правило «кеш із багатьох джерел»
користувач1914292

24
@ user1914292 Це було б корисно лише в тому випадку, якщо б у всіх браузерах існували всі версії jQuery, що існували, і якщо він перехоплював будь-які запити до будь-якого відомого джерела jQuery, замінюючи його кешованою версією. Якщо є навіть невелика різниця, це може спричинити помилки, які неможливо налагодити. Це ще більше посилюється тим, що веб-кешування працює і працює десятиліттями. Ваш браузер - не єдине, що кешує ці запити jQuery - багато маршрутизатори на шляху до вашого браузера роблять те саме. Проблема була вирішена давно, коли пропускна здатність мала значення :)
Luaan

4) Що робити, якщо код jquery на певному веб-сайті залежить від функції, яка була принципово змінена в недавньому оновлення, і більше не робить те, що очікує код?
Шадур

1
@Ejay ні, він не працює як механізм відстеження, оскільки 99% часу запит надходить із кешу браузера.
suriv

1
@BenSteward Так, використовуйте інструменти розробки веб-переглядача і перевірте панель « Мережа» . Наприклад, Chrome покаже кешовані ресурси з "кеш-диском" або "Кеш пам'яті" у стовпці "розмір" та приведеним значенням у стовпці "статус" (якщо у вас немає "Вимкнути кеш-пам'ять (поки DevTools відкрито) ”активний у налаштуваннях інструментів розробки). Це може залежати від заголовків кеш-керування та інших факторів щодо того, що відбувається кешування та на який термін. developer.mozilla.org/en-US/docs/Web/HTTP/Caching
Нік,

21

JQuery не лише популярна бібліотека JS, а браузер потенційно повинен містити кілька версій. Google CDN в даний час списки: 42 версії JQuery; 44 версії інтерфейсу jQuery; 6 версій jQuery Mobile.

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


14

Браузер - це двигун, не обов'язок дизайнера двигуна з’ясувати, яке саме паливо та додаткові частини ви збираєтеся вкласти у свій автомобіль та включити його для вас. Якщо вони роблять це браузери, це буде величезна програма, тому що наступним питанням буде "чому просто jQuery?", І ми б в кінцевому підсумку підтримували сховища залежностей.

Також ми включимо всі версії? Що робити, якщо хтось хотів би скористатися власною версією? Що робити, якщо хтось не хотів би використовувати цю бібліотеку? Як часто вони будуть зливатися та прокручувати останні випуски? Чи закінчимось ми різними браузерами з різними версіями jQuerys? Вони навіть не можуть однаково реалізовувати стандартизовані функції HTML, CSS та JavaScript. Що робити, якщо хтось із сервісів браузера не збирається включати бібліотеку або її конкретну версію?

Браузери надають будівельні блоки та середовище для створення ще не готового рішення.

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

Якщо вас дійсно хвилює розмір jQuery та використання пропускної здатності, тоді не використовуйте його. Ви коли-небудь чули про Vanilla JS ? Це ще більш популярна бібліотека, яку використовують буквально майже всі, включаючи сам jQuery! І воно вже здійснило вашу мрію, оскільки воно є у кожному браузері!


2

Причиною використання бібліотеки на зразок jQuery є сумісність.

Браузери стали більш стандартними, але, використовуючи бібліотеку jquery, ви забезпечуєте себе, вам не доведеться турбуватися про відмінності між сімействами браузерів та версіями

Поставляючи jquery самостійно, ви впевнені, що у вас є послідовна api.

Якщо у нас вбудований jquery у веб-переглядачі, ви повинні перевірити, яку версію має користувач, і ми знову переходимо до браузера та "Цей сайт найкраще переглядати у ..."

Тому мати вбудований jquery у браузер не має сенсу.

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


-3

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

Оскільки особа, яка задає питання, заявляє, що умовні коментарі можуть бути використані для того, щоб ті, хто використовує браузери, які не містять jquery, подавали відповідну версію.

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

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

По суті задля додавання додаткових кількох мегабайт коду в упакованому браузері - ті самі дані марно перевозяться близько мільярдів разів на день.

Це погіршує роботу користувачів для всіх в Інтернеті. А коштує великим підприємствам величезні гроші.

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


1
Це дотично до питання. Питання полягає в тому, "чому б не браузери, і що я можу з цим зробити", а не "чому б браузери".
Стівен Остерміллер

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

Більшість людей не змогли також сказати найвідповіднішу відповідь на це питання, і це те, що jQuery не є веб-стандартом, і браузери виконують лише веб-стандарти, які змінюються повільно і ґрунтуються на основах. jQuery спочатку був створений для того, щоб основи послідовно працювали між браузерами, тому в тому числі jQuery - це як включення патча для виправлення браузерів, але браузери вже виправляються. Вже зараз ми бачимо зменшення використання jQuery, як частково засвідчується багатьма статтями "Вам не потрібні jQuery".
Роб

Стівен. Питання не в тому, "чому беріть браузери, і що я можу з цим зробити". Це ваше переосмислення. Питання в тому, чому їх не робити, і людина, яка запитує, чітко заявляє, що просто робити це і створити нову рамку для вирішення проблем, які виникають, насправді матиме величезну потенційну користь для всіх користувачів Інтернету.
Енді Ббоп

Вам усім потрібно припинити захищати свої застарілі застереження і визнати, що ви все ще можете навчитися. О, і також навчитися насправді щось читати. #Wapons. "ОП, розмірковуючи над вашою точкою, зацікавлена ​​у зменшенні трафіку до CDN". Ні, він говорить, що це може заощадити великі обсяги пропускної здатності, будь то на стороні клієнта чи CDN. Прочитайте публікацію effing.
Енді Ббоп
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.