许多网站使用大型Javascript库。他们通常通过使用第三方内容交付网络包括它们,如下所示:
我得到了这个表面上的吸引力。但是有几十种流行的Javascript CDN可用。您的用户访问与您的站点使用完全相同的CDN的站点的可能性有多大?
您可能不应该使用多兆字节的库。要尊重用户的下载限制。但是如果你真的担心速度,那么你的整个站点当然应该支持一个CDN--而不仅仅是几个JS库?
有一些CDN可以让您包含最新版本的库。但是,您必须在没有任何警告的情况下处理破坏更改的问题。
所以大多数人只包含他们想要的JS的特定版本。当然,如果您使用的是v1.2,而另一个站点使用的是v1.2.1,则浏览器不能利用缓存。
您的CDN可靠吗?你希望如此!但是,如果用户的网络阻塞了CDN或中断了下载,您现在就是在没有Javascript的情况下为您的站点提供服务。这不一定是一件坏事-你做的是渐进式增强,对吗?但这并不理想。
如果您从与主站点相同的来源提供JS,则用户获得中断体验的可能性较小。
您的CDN的隐私政策是什么?您是否需要告诉您的用户,他们的浏览数据正被发送到位于不同法律管辖区的神秘公司?
英国航空公司的支付页面被入侵的第三方Javascript入侵。一名恶意用户在现场更改了不在英国航空公司控制下的代码,然后英国航空公司将其提供给客户。
即使JS文件有一个字节被更改,散列也不匹配,浏览器应该拒绝运行代码。
当然,这意味着你可能会在你的网站上得到一个破碎的体验。因此,只需从您自己的站点为JS提供服务即可。
这不是网络上最大的问题。我当然对滥用CDN这样的行为感到内疚。
回到当时只有几个CDN,它们的库变化不快的时候,使用它们是有好处的。
如今,在一个隐私和安全违规行为猖獗的时代,我认为使用第三方源代码的Javascript应该被视为反模式。