javascript – 使用CDN的jQuery(或其他静态文件/脚本)真的是个好主意?

前端之家收集整理的这篇文章主要介绍了javascript – 使用CDN的jQuery(或其他静态文件/脚本)真的是个好主意?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
它在所有地方使用CDN,如Google或Microsoft的 AJAX CDN来加载静态脚本库,如我的情况下的jQuery.

我不明白如何真正有助于使我的网站更快.在firebug中,当我加载jQuery时,我和Google AJAX服务器的时间差距大约是300ms,而在Chrome中,我已经在100ms左右(dunno创造了差异,没有下载,尝试了两次,但无论如何这不是重点),当我部署时,我的网站的平均响应时间估计为30到40ms.如何加载文件CDN对我的网站有好处?它会使一切都变得更糟!

我了解到,当我使用Google的CDN浏览许多网站时,就需要“下载”脚本一次,但我的浏览器仍然尝试连接到Google的服务器,并要求脚本文件,然后接收304未修改的状态码.在这次200毫秒(Chrome和FF的平均值)的往返中,我等待.但是,如果我自己托管脚本文件,那么它将(下)加载更快,大约五次,这是用户体验的重要因素.也许200ms不是一个很大的交易,但它仍然是一个不同,我想知道为什么建议使用CDN而不是自己托管文件.最后,一次性加载后,浏览器会缓存我的站点的脚本,如果我使用CDN,浏览器会询问CDN是否是脚本,这将延迟我的网站.

更新:我来自土耳其,这可能是高回合率的主要原因.我的大部分访问者都将来自这里,所以我问这个对我在土耳其的服务器上托管的网站,也是在土耳其的网站的用户使用CDN是有益的.绝对不是很好的回合,但也许我错过了一些东西.

解决方法

两部分答案:

>你不应该看到304s
但是这是一个好主意吗?

你不应该看304

I understand that when I visit many sites using,say,jQuery from Google’s CDN,it will have to “download” the script only once for a very long time,but my browser still tries to connect to the Google’s server,and ask for the script file,and then receive 304 not modified status code.

它不应该,不是如果它尊重Cache-Control标题

Cache-Control:public,max-age=31536000

…从资源的日期开始,浏览器可以缓存长达一年的时间.不需要任何HTTP请求(这就是我在Chrome中看到的东西,除非我强制它,没有任何请求,只是一个来自缓存的注释;激发Firefox,并确保Firebug在所有页面上,来到StackOverflow第一次在Firefox(我只用于测试)的很长一段时间,而且确实没有发出任何jquery的请求).

例如,304响应可能需要200ms,但如果您的浏览器正确缓存,则缓存加载将为0ms.

在强制请求中看到的完整的相关标题集是:

Cache-Control:public,max-age=31536000
Date:Wed,17 Aug 2011 21:56:52 GMT
Expires:Thu,16 Aug 2012 21:56:52 GMT
Last-Modified:Fri,01 Apr 2011 21:23:55 GMT

所以我的浏览器不应该再要求这个路径将近一年.

请参阅@Dave Ward的评论:要获得最大缓存结果,请使用完整的版本号,例如:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js'></script>
<!--                               very specific ---^^^^^                      -->

而不是

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'></script>
<!--                               very generic ----^                      -->

好的,但这是一个好主意吗?

这完全取决于你即使有这样的回退:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'></script>
<script>
if (typeof jQuery === "undefined") {
    document.write("<scr" + "ipt src='/my/local/jquery.js'></scr" + "ipt>");
}
</script>

…或类似的,如果CDN关闭,UX将会很糟糕.浏览器将会尝试连接到它的年龄.如果CDN快速回复失败,这种回退只会有帮助,这是不太可能的.

这意味着如果Google的CDN失效,您将不得不快速调整您正在投放的内容以改用本地副本.因此,防止这种情况成为监控工作(Google的服务器;不要过度或不满意),在服务器级别进行故障转移,以开始使用本地路径提供服务. (或微软的路径,基于Google和微软可能不会共享基础CDN技术的理论,考虑到他们相处得如何.)

对我来说,大多数网站的答案可能是:使用CDN,如果和之后Google的CDN图书馆都会关闭,请做出反应.另一方面是:如果您对服务器的整体页面加载性能加载感到满意,那么在这种情况下,直到或除非流量足够高以至于您正在寻找最后一点绩效的东西,这样做的危害很小.但是,很多(和很多)网站依赖于Google的CDN,如果它下降,您的网站将远远不能单独失败…

猜你在找的jQuery相关文章