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

19

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

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

Все, что было бы действительно необходимо, это что-то вроде выражения if:

 <!--[if jQuery gt 11]>

Существует ли что-то, что поможет мне предотвратить переход пользователей в CDN, если в их кеше уже есть jQuery с другого сайта?

user1914292
источник
3
вопрос в том, зачем пользователю делать новые загрузки с сайтов или CDN для того, что у него уже есть? JQuery подается из разных мест и во многих версиях. Я обеспокоен скоростью страниц, а пользователи обеспокоены (особенно мобильной) пропускной способностью. Если для библиотеки существует золотой стандарт, то почему бы не использовать его? Конечно, есть и другие примеры, и я бы их тоже приветствовал, если для них существует согласованный стандарт (например, номер версии).
user1914292
27
Почему jQuery, а не Angular, MooTools, Underscore, ...? И какие версии у каждого? Должны ли браузеры содержать копии всех когда-либо созданных библиотек JavaScript?
user253751
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 +, то это становится еще хуже. Я понимаю вашу мысль о том, что браузеры не являются репозиториями, но разве мы не сможем придумать какое-то правило типа «кеш из нескольких источников»?
user1914292
24
@ user1914292 Это было бы полезно, если бы во всех браузерах были все версии jQuery, когда-либо существовавшие, и если он перехватывал какие-либо запросы к любому известному источнику jQuery, заменяя его кэшированной версией. Если есть даже небольшая разница, это может привести к ошибкам, которые невозможно отладить. Это еще более усугубляется тем фактом, что веб-кэширование работает и работает десятилетиями. Ваш браузер не единственная вещь, которая кэширует эти запросы jQuery - многие маршрутизаторы на пути к вашему браузеру делают то же самое. Проблема была решена давно, когда пропускная способность имела значение :)
Luaan
4) Что если код jquery на конкретном сайте зависит от функции, которая была существенно изменена в недавнем обновлении, и больше не выполняет то, что от него ожидает код?
Шадур
1
@ Эджей нет, он не работает как механизм отслеживания, потому что 99% времени запрос обрабатывается из кэша вашего браузера.
Suriv
1
@BenSteward Да, используйте инструменты разработчика вашего браузера и проверьте панель «Сеть» . Например, в Chrome будут отображаться кэшированные ресурсы с «дисковым кешем» или «кешем памяти» в столбце «размер» и скрытым значением в столбце «статус» (если у вас нет «Отключить кэш (в то время как DevTools») открыт) »активен в настройках dev tools). Это может зависеть от заголовков управления кэшем и других факторов относительно того, что кэшируется и как долго. developer.mozilla.org/en-US/docs/Web/HTTP/Caching
Ник
21

JQuery не только не единственная популярная библиотека JS, браузер может включать несколько версий. В настоящее время в списке CDN Google : 42 версии jQuery; 44 версии пользовательского интерфейса jQuery; 6 версий jQuery Mobile.

Лучше позволить веб-разработчикам определять, какую версию библиотеки загружать, исходя из требований их веб-сайта. Если вы используете текущую производственную версию jQuery на своем веб-сайте и загружаете ее из более популярного CDN, то есть большая вероятность, что ваши посетители все равно будут кэшировать ее.

Эндрю Лотт
источник
14

Браузер - это двигатель, его обязанность не состоит в том, чтобы выяснить, какое топливо и какие дополнительные детали вы собираетесь заправить в свой автомобиль, и включить его для себя. Если бы они делали это, браузеры были бы огромным хламом, потому что следующий вопрос будет «почему просто jQuery?», И мы в конечном итоге будем поддерживать репозитории зависимостей.

Кроме того, мы будем включать все версии? Что если кто-то захочет использовать пользовательскую версию? Что если кто-то не захочет использовать эту библиотеку? Как часто они будут объединять и выпускать последние выпуски? Будем ли мы использовать разные браузеры с разными версиями jQuerys? Они даже не могут в равной степени реализовать стандартизированные функции HTML, CSS и JavaScript. Что если один из сопровождающих браузера не собирается включать библиотеку или ее конкретную версию?

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

Внедрение jQuery в браузер не приведет к невероятно быстрой загрузке вашего сайта, поскольку в настоящее время это не самое большое узкое место, однако мы можем согласиться с тем, что jQuery - излишне большая библиотека, но ее целью никогда не было быстрая библиотека (учитывая пропускная способность). Есть много других библиотек, которые были специально разработаны для быстрой загрузки и легковесны, как Zepto .

Если вы действительно обеспокоены размером и пропускной способностью jQuery, не используйте его. Вы когда-нибудь слышали о Vanilla JS ? Это еще более популярная библиотека, которая используется буквально почти всеми, включая сам jQuery! И это уже осуществило вашу мечту, потому что она включена в каждый браузер!

totymedli
источник
2

Причиной использования такой библиотеки, как jQuery, является совместимость.

Браузеры стали более совместимыми со стандартами, но, используя библиотеку jquery, вы предоставляете сами, вам не нужно беспокоиться о различиях между семействами браузеров и версиями.

Предоставляя JQuery самостоятельно, вы обязательно получите последовательный API.

Если у нас есть jquery, встроенный в браузер, вы должны проверить, какая версия у пользователя, и мы снова входим в браузеры, и "Этот сайт лучше всего просматривать в ..."

Так что встроенная в браузер jquery не имеет смысла.

Кроме того, кэширование работает, поэтому, даже если у пользователя еще нет вашей версии jquery, его нужно загрузить только один раз.

Lenne
источник
-3

Я на самом деле думаю, что респонденты здесь не понимают, что ответ на этот вопрос заключается в том, что браузеры, вероятно, должны искать наиболее широко используемые библиотеки, полифилы и т. Д. На стороне клиента.

Как говорит тот, кто задает вопрос, условные комментарии могут быть использованы для обеспечения того, чтобы те, кто использует браузеры, не включающие jquery, получили соответствующую версию.

Jquery также включает в себя собственную поддержку обратной совместимости через миграцию, что позволяет использовать условные комментарии для поддержки ретро для кого-то с упакованной версией более старой библиотеки jquery без загрузки всей новой библиотеки.

Аргумент ЗА включение их в браузеры будет не только о пользовательском опыте и стоимости, но и об этой планете, на которой мы живем. Использование данных является огромным вкладом в глобальное загрязнение, и обеспечение того, чтобы ненужная передача данных была сведена к минимуму, могло оказать существенное влияние на наш углеродный след.

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

Это ухудшает пользовательский опыт для всех в Интернете. И стоит крупному бизнесу огромные суммы денег.

Как разработчик, вы бы просто создали необходимые запасные варианты, необходимые для IE и т. Д., Так в чем же проблема - она, вероятно, должна быть обязательно включена?

Энди Ббоп
источник
1
Это касается вопроса. Вопрос в том, почему не браузеры, и что я могу с этим поделать, а не в том, почему браузеры.
Стивен Остермиллер
OP, обдумывая вашу точку зрения, заинтересован в сокращении трафика на CDN, если инфраструктура уже существует в кэше браузеров, возможно, даже с другого сайта. Лично я не могу понять, как, если нет общего способа ссылаться на структуру.
closetnoc
Большинство людей не смогли также назвать наиболее релевантный ответ на этот вопрос, и именно jQuery не является веб-стандартом, а браузеры работают только с веб-стандартами, которые меняются медленно и основаны на основных принципах. Первоначально jQuery был создан для того, чтобы основные принципы работали согласованно между браузерами, поэтому включение jQuery похоже на включение патча для исправления браузеров, но браузеры уже исправили себя. Уже сейчас мы видим сокращение использования jQuery, о чем частично свидетельствуют многочисленные статьи «Вам не нужен jQuery».
Роб
Стивен. Вопрос не в том, «почему не браузеры, и что я могу с этим поделать». Это твоя перефразировка. Вопрос в том, почему не они, а тот, кто спрашивает, четко заявляет, что простое выполнение этого и создание новой платформы для решения возникающих проблем на самом деле принесет огромную потенциальную выгоду всем пользователям сети.
Энди Ббоп
Вы все должны прекратить защищать свои устаревшие предубеждения и признать, что вы все еще можете учиться. Ох, а также научиться на самом деле читать что-то. #Weapons. «ОП, обдумывая вашу точку зрения, заинтересована в сокращении трафика на CDN». Нет, он говорит, что это может сэкономить огромное количество пропускной способности, будь то на стороне клиента или CDN. Прочитайте этот пост.
Энди Ббоп