这样,每天可以避免数百万次jQuery的下载。
真正需要的只是某种if语句,例如:
<!--[if jQuery gt 11]>
是否是否存在某些可以帮助我阻止用户访问CDN的东西,如果他们已经从另一个站点的缓存中获取了jQuery?
#1 楼
如果您通过流行的CDN(例如Google的托管库或cdnjs)提供jQuery,则只要您的访问者来自同一来源引用了它的网站(只要缓存的版本尚未过期),就不会重新下载它。 br />正如您所说的那样,jQuery是一个流行的库,但是由于以下几个原因,它不太可能与浏览器绑定:
jQuery相对较小(与有时捆绑在浏览器(例如Flash)中的库相比)。普通网站上最大的性能瓶颈不太可能是由于下载jQuery。
对JavaScript / ECMAScript的改进意味着开发人员不再需要依赖jQuery。 (请参见youmightnotneedjquery.com。)
还有很多其他流行的JavaScript库。浏览器未设计为JavaScript代码的存储库。跟踪脚本的受欢迎程度,删除不受欢迎的库并保持所有最新信息可能最好留给各个站点的Web开发人员。
评论
我了解这一点,但是现在我将code.jquery.com用作CDN。但是,当另一个网站使用googleapis或cdjns时,浏览器将再次从该其他CDN下载jQuery。那只是没有意义,并在整个地方花费大量时间/带宽。如果添加到这一点,在大多数情况下,人们会喜欢jQuery1.7 +之类的东西,那么情况就更糟了。我了解您关于浏览器不是存储库的观点,但是我们是否无法提出某种“多源缓存”规则?
–user1914292
2015年9月4日在8:57
@ user1914292仅当所有浏览器都具有所有版本的jQuery,并且它拦截了对任何已知jQuery来源的任何请求并将其替换为缓存的版本时,这才有用。如果差异很小,则可能会导致无法调试的错误。 Web缓存有效并且已经使用了数十年的事实进一步加剧了这一点。您的浏览器不是唯一缓存那些jQuery请求的东西-浏览器途中的许多路由器都执行相同的操作。这个问题早在带宽确实很重要的时候就已经解决了:)
–罗安
2015年9月4日在11:22
4)如果某个特定站点上的jquery代码取决于最近更新中已从根本上更改的功能,并且不再期望该代码执行该操作,该怎么办?
– Shadur
2015年9月5日于11:21
@Ejay不,它不能用作跟踪机制,因为99%的时间是从浏览器缓存中为请求提供服务。
–suriv
2015年9月6日于20:06
@BenSteward是的,使用浏览器的开发工具并检查“网络”面板。例如,Chrome浏览器将在“大小”列中显示带有“磁盘缓存”或“内存缓存”的缓存资源,并在“状态”列中显示幻影值(只要您没有“禁用缓存”(而DevTools处于打开状态)”(在开发工具设置中处于活动状态)。它可能取决于缓存控制标头以及其他有关缓存内容和持续时间的因素。 developer.mozilla.org/zh-CN/docs/Web/HTTP/Caching
–尼克
19-09-25在6:57
#2 楼
jQuery不仅是唯一流行的JS库,而且浏览器可能必须包含多个版本。 Google CDN当前列出:42个jQuery版本; jQuery UI的44个版本; jQuery Mobile的6个版本。最好允许Web开发人员根据他们的网站要求定义要下载哪个版本的库。如果您在网站上使用当前生产版本的jQuery并从更流行的CDN加载它,那么很有可能您的访问者无论如何都会对其进行缓存。
#3 楼
浏览器是引擎,找出要放入车中的燃油和多余零件并为您提供的燃料不是引擎设计师的责任。如果他们愿意这样做,那么浏览器将是一个庞大的软件,因为下一个问题将是“为什么只是jQuery?”,而我们最终将维护依赖项存储库。我们还将包括所有版本吗?如果有人想使用自定义版本怎么办?如果有人不想使用该库怎么办?他们将多久合并和发布最新版本?我们将最终使用具有不同版本的jQuery的不同浏览器吗?他们甚至无法平等地实现标准化的HTML,CSS和JavaScript功能。如果其中一个浏览器维护者不打算包括库或其特定版本,该怎么办?
浏览器为您提供了构建块和环境,供您构建尚未完成的解决方案。
将jQuery放入浏览器并不会使您的网站快速加载,因为在当今,这并不是最大的瓶颈,但是我们可以同意jQuery是一个不必要的大库,但是它的目的从来都不是快速库(考虑带宽)。还有许多其他的库是专门针对快速加载而设计的,并且像Zepto一样轻巧。
如果您真的担心jQuery的大小和带宽使用,请不要使用它。您听说过Vanilla JS吗?这是一个更加流行的库,几乎每个人都在使用它,包括jQuery本身!它已经实现了您的梦想,因为它包含在每个浏览器中!
#4 楼
使用jQuery之类的库的原因是兼容性。浏览器已变得更加符合标准,但是使用jquery库,您可以自己提供,而不必担心浏览器系列之间的差异。和版本
通过自己提供jquery,您肯定具有一致的api。
如果我们在浏览器中内置了jquery,则必须检查该版本的用户拥有,然后我们又回到浏览器中,嗅探到“最好在...中查看此站点”。
因此将jquery内置到浏览器中是没有意义的。
也可以使用缓存,因此即使用户还没有您的jquery版本,也只需下载一次即可。
#5 楼
我实际上认为,这里的响应者无法理解问题的答案是浏览器可能应该在客户端上包括使用最广泛的库以及polyfills等。问问题的人指出,可以使用条件注释来确保使用不包含jquery的浏览器的用户使用了适当的版本。
Jquery还通过迁移提供了它自己的向后兼容性支持,允许条件注释为具有较旧jquery库打包版本的用户提供追溯支持,而无需下载整个新库。
在浏览器中包含这些参数的论点不仅与用户体验和成本有关,而且与我们赖以生存的地球有关。数据的使用是对全球污染的巨大贡献,确保最大程度地减少不必要的数据传输可能会对我们的碳足迹产生巨大影响。
本质上是为了在打包的浏览器中添加额外的几兆字节代码膨胀-相同的数据每天不必要地传输数十亿次。
这会恶化互联网上每个人的用户体验。并给大型企业带来巨额费用。
作为开发人员,您将像我们目前为IE等创建的那样创建所需的必要后备,那么,出了什么问题-可能应该确定包含它吗?
评论
这与这个问题有关。问题是“为什么不使用浏览器,我该怎么办”,而不是“为什么要使用浏览器”。
–斯蒂芬·奥斯特米勒(Stephen Ostermiller)
17年7月29日在16:47
如果考虑到您的观点,OP可能会对减少CDN的流量感兴趣,如果该框架已经存在于浏览器缓存中,甚至可能来自另一个站点。就个人而言,除非有通用的引用框架的方法,否则我看不到该怎么做。
– closetnoc
17年7月30日在1:30
大多数人都没有说出与该问题最相关的答案,那就是jQuery不是Web标准,浏览器仅运行缓慢变化且基于基本原理的Web标准。最初创建jQuery是为了使基础结构在浏览器之间始终保持一致,因此包括jQuery在内就好像包含了一个修复浏览器的补丁程序,但浏览器最终已经可以自我修复。如今,我们已经看到jQuery的使用减少了,这在一定程度上已被许多“不需要jQuery”文章所证明。
–Rob
17年7月30日在2:47
史蒂芬问题不是“为什么不使用浏览器,我该怎么办”。那就是你的想法。问题是为什么他们不这样做,并且询问该人的人清楚地指出,只要这样做并创建一个新框架来处理出现的问题,实际上将为所有Web用户带来巨大的潜在利益。
– Andy Bbop
17-10-31在22:42
你们都需要停止捍卫过时的成见,并接受仍然可以学习的知识。哦,还学会实际阅读一些东西。 #武器。 “ OP在考虑您的观点的同时,有兴趣减少CDN的访问量”。他没有说,无论是在客户端还是在CDN上,它都可以节省大量带宽。阅读effing帖子。
– Andy Bbop
17-10-31在22:49
评论
问题是-用户为什么需要从网站或CDN上为其已有的内容进行新下载? jQuery可从许多位置和许多版本提供服务。我担心页面速度,用户担心(尤其是移动)带宽。如果图书馆有黄金标准,那为什么不使用它呢?当然,还有其他示例,我也欢迎这些示例-只要有针对它们的公认标准(例如版本号)即可。为什么使用jQuery,但为什么不使用Angular,MooTools,Underscore等呢?以及每个版本?浏览器是否应该包含曾经制作的每个JavaScript库的副本?
“对不起,您必须先升级到浏览器的0.1更高版本,才能使用我的网站”
相关
为此进行了缓存。否则,版本处理基本上是不可能的