是否可以将JQuery和类似工具内置到浏览器中?


19

在阅读了有关JQuery和CDN的另一个问题之后,诸如JQuery之类的工具随浏览器“问世”是否可行,从而减少/消除了从CDN或您自己的主机服务器进行首次下载的需要。

JQuery文件特别小,因此作为浏览器安装的一部分,您可以轻松拥有多个(全部?)不同的版本。现在足够公平了,这将增加安装空间,并缩短浏览器本身的下载时间。

然后,站点可以先检查“本地”,然后再检查CDN(然后缓存),然后最终默认从网站服务器本身下载。

如果可行,是否已经完成,如果没有,为什么还没有完成?


3
当特定的JavaScript函数变得无处不在,以至于到处都需要它时,它就会被添加到该语言中。Array.prototype.forEachArray.prototype.indexOfObject.create是得到了捆绑成JavaScript引擎本身的代码示例。
zzzzBov 2012年

我确定Chrome会提供一种解决方案,为最终用户提供安装扩展程序的选项,并能够在首次呈现网站时缓存必要的jQuery / javascript文件吗?如果用户拒绝,则照常执行该请求。选项“不再询问我”可以禁用此选项。设置中可能会有一个区域,最终用户可以使用简单的复选框列表选择要存储在浏览器缓存中的js文件。总是会有自定义的js发送到客户端,但是似乎消除了按请求发送给客户端的js文件会优化p
yardpenalty 2014年

1
您建议它们包括哪个版本?下周呢
pdr 2014年

@pdr-旧问题,对否定答案有很多答案。但是您可以轻松地将最新版本与浏览器版本捆绑在一起,并允许用户代码回退到要求CDN要求更新的版本。使用像JQuery 2.0这样的重大更改,您可以同时拥有并允许代码进行选择。所有的沉默点虽然真的是:)
ozz 2014年

Answers:


15

没有技术原因不能做到。但是,这是不必要的,并且违反了网络的基本哲学。这是没有必要的,因为您可以用一个过期的Expire标头实现几乎相同的功能。这与Web的哲学背道而驰,因为它导致存在一个自上而下的,集中的授权机构,在该机构中,应该/不应该将库与浏览器捆绑在一起。

编辑:JS库主要是为了使处理DOM更容易。我认为将第三方库与浏览器绑定不是使DOM API更令人愉悦的正确方法。


1
谢谢丹-我可以阅读您所描述的任何链接吗?
ozz

1
我会争辩说,每次我请求一个页面时都需要在数百万兆字节的公共库中下载兆字节数,这违背了保持网页小巧和可访问性的另一种基本网络哲学。毕竟,许多人仍在使用调制解调器,并且卫星连接速度很慢。
枫木轴

4
根管操作将使DOM API更令人愉快...
Donal Fellows 2012年

1
@maple_shaft,这有点似是而非。缩小的jQuery发行版为31K。尽管确实存在这样的情况:有些网页加载了许多不同的库,但问题是jQuery所特有的,没有考虑到笨拙的程序员。
亚当·克罗斯兰

16

实际上,您所描述的内容已经存在多年了。这就是所谓的缓存。它不仅适用于JQuery,而且适用于您的浏览器可能下载的所有内容。

然后,站点可以首先在CDN之前检查“本地”,然后最终默认为从网站服务器本身下载。

这正是每个浏览器的功能。它首先检查本地缓存,然后根据需要从CDN下载一个。使用正确的缓存配置,几个月甚至都不会往返服务器(以检查较新的版本)。

将JQuery包含在浏览器设置中将是:

  • 给浏览器应用程序和设置增加不必要的复杂性,

  • 添加不必要的复杂性来更新流程,

  • 增加更新次数以保持JQuery的最新版本,即使对于不需要它的人来说,

  • 增添混乱:为什么使用JQuery而不使用Prototype或其他框架,图像,CSS文件等?

  • 等等

在功能,性能等方面没有好处的情况下,增加软件产品的复杂性是一个非常糟糕的主意。


谢谢。是的,我不清楚我的问题。我很清楚会发生什么。我说的是消除甚至不需要第一次下载。我将更新问题。
ozz 2012年

感谢您出于各种原因
而不

6
您无法消除首次下载的需要。如果jQuery是包含在安装程序,它下载了当人下载安装可执行文件第一次(然后通过再次更新下载时的jQuery新版本发布)。
Arseni Mourzenko 2012年

2
它并不能消除性能下降的问题,而是将其从第一个网站的访问转移到安装可执行文件的下载,这意味着总体而言,这与性能节省相反。如果您想支持较旧的浏览器以及自上一个JQuery版本发布以来未更新的浏览器,也不会消除CDN的需求。
阿森尼·穆尔琴科

1
@All如果您想进一步讨论,请与我们聊天。
maple_shaft

5

别忘了jQuery是一个js库,它似乎已经成为事实上的一个库,并被视为万灵药(从某种意义上来说,它已成为值得纪念的东西),但是它只是一个js库。

脚本标准化(EMCAScript)的一切都是包含在已经浏览器,什么都加入到其他浏览器将成为非标和你最终与非标准浏览器的跨浏览器的问题(如IE的事件模型),这会影响到首先创建jQuery之类的库的部分原因。

简短的答案:可以将它们包括在内,但不应包括在内。


5

浏览器缓存提供的功能与您所讨论的非常相似。应该是将jQuery或任何其他JS库下载一次,然后根据进一步的请求从缓存中检索出来的情况。

虽然jQuery可能是最普及的JavaScript库,但它并不是唯一的库,在我看来,将其安装为浏览器的安装组件对JS生态系统不利。竞争是健康的,通常会导致创新,因此,给jQuery一个特殊的位置,我们的开发人员和软件用户将无法得到良好的服务。

一旦考虑了缓存,您获得的好处就非常非常小。jQuery的缩小版只有31K。那不是改变任何事情的理由。


谢谢亚当-是的,我知道第一个下载,缓存方案。我的想法是也要取代它。JQuery只是一个示例,但我同意您对竞争的看法,这似乎可能是我建议不发生的主要原因。然后,你必须具有不同组的“默认”组件等不同的浏览器
OZZ

我更新了问题,提到我知道缓存:-)
ozz 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.