Могут ли JQuery и подобные инструменты быть встроены в браузер?

19

После прочтения еще одного вопроса о JQuery и CDN, возможно ли, чтобы такие инструменты, как JQuery, «приходили с» браузером, тем самым уменьшая / устраняя необходимость в первой загрузке из CDN или с вашего собственного хост-сервера.

В частности, файлы JQuery довольно малы, так что вы можете легко получить несколько (все?) Разных версий в процессе установки браузера. Теперь, если честно, это увеличит занимаемую площадь, время загрузки самого браузера.

Затем сайты могут сначала проверить «локальный», перед CDN (который затем кэшируется), прежде чем, наконец, по умолчанию выполнить загрузку с самого сервера веб-сайта.

Если это возможно, было ли это сделано, а если нет, то почему это не было сделано?

Ozz
источник
3
Когда конкретная функция JavaScript становится настолько повсеместной, что ее считают необходимой везде, она добавляется к языку. Array.prototype.forEach, Array.prototype.indexOf, Object.createВсе примеры кода , которые получили в комплекте сам двигатель JavaScript.
zzzzBov
Я уверен, что Chrome предложит решение, которое предлагает конечному пользователю возможность установить расширение с возможностью кэширования необходимых файлов jQuery / javascript при первом отображении сайта? Если пользователь отклоняет это, он заставляет запрос как обычно. Опция «Не спрашивать меня снова» может отключить эту опцию. В настройках может быть область, в которой конечный пользователь может выбрать файлы js для хранения в кэше браузера с помощью простого списка флажков. Всегда будут пользовательские js, отправленные клиенту, но кажется, что устранение js-файлов, отправляемых клиенту по запросу, оптимизировало бы p
yardpenalty
1
Какую версию вы предлагаете включить? Как насчет следующей недели?
фунтовые
@pdr - старый вопрос, с большим количеством ответов на негатив за это. НО вы можете легко связать последнюю версию с выпуском браузера и позволить пользовательскому коду вернуться к запросу более новой версии из CDN, если потребуется. С такими критическими изменениями, как JQuery 2.0, вы можете иметь и то и другое и позволить коду выбирать. Все
безмолвие,

Ответы:

15

Там нет никаких технологических причин, почему они не могли. Тем не менее, это не обязательно, и это противоречит фундаментальной философии сети. В этом нет необходимости, потому что вы можете достичь почти того же самого с помощью заголовка expires в далеком будущем. Это противоречит философии сети, потому что она создает централизованный орган управления сверху вниз, который не должен / не должен быть связан с браузером.

Редактировать: библиотеки JS существуют, прежде всего, для облегчения работы с DOM. Я не думаю, что объединение сторонних библиотек с браузером является правильным способом сделать API DOM более приятным.

dan_waterworth
источник
1
спасибо Дэн - любые ссылки, которые я могу прочитать на то, что вы описываете?
Оз
1
Я бы сказал, что необходимость загружать мегабайты в мегабайты обычных библиотек каждый раз, когда я запрашиваю страницу, противоречит другой фундаментальной веб-философии - держать веб-страницы небольшими и доступными. В конце концов, многие люди все еще используют модемы и медленные спутниковые соединения.
maple_shaft
4
Операция с корневым каналом сделает API DOM более приятным ...
Donal Fellows
1
@maple_shaft, это довольно показательный аргумент. Минимальный дистрибутив jQuery составляет 31 КБ. Хотя, безусловно, есть случаи, когда есть веб-страницы, которые загружают огромное количество различных библиотек, вопрос специфичен для jQuery, и для программистов это не нужно.
Адам Кроссленд
16

На самом деле, то, что вы описываете, существует уже много лет. Это называется кешированием . И это доступно не только для JQuery, но и для всего, что может загрузить ваш браузер.

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

Это именно то, что делает каждый браузер. Сначала он проверяет локальный кеш, а затем загружает его из CDN, если это необходимо. При правильной конфигурации кеша, даже нет возможности обратиться к серверу туда и обратно (для проверки более новой версии) в течение нескольких месяцев.

Включение JQuery в настройку браузера будет:

  • Добавьте ненужную сложность к приложению и настройке браузера,

  • Добавить ненужную сложность для процесса обновления,

  • Увеличьте количество обновлений, чтобы поддерживать актуальную версию JQuery, даже для людей, которым это не нужно,

  • Добавьте путаницу: почему JQuery, а не Prototype или какой-то другой фреймворк, изображение, файл CSS и т. Д.?

  • и т.п.

Увеличение сложности программного продукта без каких-либо преимуществ с точки зрения функциональности, производительности и т. Д. Является крайне плохой идеей.

Арсений Мурзенко
источник
Благодарю. Да, я не был ясен в своем вопросе. Я хорошо знаю, что это то, что происходит. Я говорю об устранении необходимости даже первой загрузки. Я обновлю вопрос.
Оз
спасибо за все ваши причины НЕ включать в настройку браузера :-)
ozz
6
Вы не можете устранить необходимость в первой загрузке. Если JQuery включен в настройках, она будет загружена в первый раз , когда человек загружает настройки исполняемого файла (то он загружается снова через обновление , когда новая версия JQuery отпущена).
Арсений Мурзенко
2
Он не устраняет снижение производительности, а переносит его с посещения первого веб-сайта на загрузку исполняемого файла установки, что означает, что в целом это противоположно снижению производительности. Это не устраняет необходимость CDN, если вы хотите поддерживать старые браузеры и браузеры, не обновленные с момента выпуска последней версии JQuery.
Арсений Мурзенко
1
@All Если вы хотите обсудить это дальше, пожалуйста, возьмите это в чат.
maple_shaft
5

Не забывайте, что jQuery - это библиотека js, она, похоже, стала де-факто и рассматривается как панацея (до такой степени, что становится достойной внимания на SO), но это всего лишь библиотека js.

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

Краткий ответ: они могут быть включены, но не должны.

StuperUser
источник
5

Кэширование браузера обеспечивает нечто очень похожее на то, о чем вы говорите. Должно быть так, что jQuery или любая другая библиотека JS будут загружены один раз, а затем извлечены из кэша при дальнейших запросах.

Хотя jQuery может быть самой распространенной библиотекой JavaScript, она не единственная, и мне кажется, что сделать ее установленным компонентом браузера было бы плохо для экосистемы JS. Конкуренция здорова и, как правило, ведет к инновациям, и мы, разработчики и пользователи программного обеспечения, не будем хорошо обслуживать, предоставляя jQuery особую должность.

Когда вы принимаете во внимание кэширование, получаемое вами преимущество очень и очень минимальное. Минимизированная версия jQuery всего 31K. Нет смысла что-либо менять .

Адам Кроссленд
источник
спасибо Адам - ​​да, я знаю первый сценарий загрузки, кеширования. Мои мысли должны заменить это также. JQuery был всего лишь 1 примером, но я согласен с вашими мыслями о конкуренции, кажется, что это может быть главной причиной того, что, как я предполагаю, не происходит. Тогда у вас будут разные браузеры с разными наборами компонентов по умолчанию и т. Д.
ozz
Я обновил вопрос, чтобы упомянуть, что я знаю о кешировании :-)
ozz