Javascript 是否减少HTTP请求?

Javascript 是否减少HTTP请求?,javascript,http,performance,minify,Javascript,Http,Performance,Minify,一个理论问题: 我们都知道专业的缩小和组合javascript文件,以减少HTTP请求来加速网站。但是,当使用流行的javascript库(例如jQuery)时,假设这些库已经从另一个页面下载到客户端计算机上并不愚蠢 那么,我们应该选择什么呢业界的大人物是如何处理的? A)将每个脚本合并并缩小为一个大脚本,然后从我自己的CDN提供服务。 B)将所有“自编”脚本合并到一个文件中,并尽可能利用可用的库CDN。 谢谢 我认为这取决于你的网站: 如果你的站点主要由相同类型的页面组成,而这些页面需要相同

一个理论问题:
我们都知道专业的缩小和组合javascript文件,以减少HTTP请求来加速网站。但是,当使用流行的javascript库(例如jQuery)时,假设这些库已经从另一个页面下载到客户端计算机上并不愚蠢

那么,我们应该选择什么呢业界的大人物是如何处理的?

A)将每个脚本合并并缩小为一个大脚本,然后从我自己的CDN提供服务。

B)将所有“自编”脚本合并到一个文件中,并尽可能利用可用的库CDN。


谢谢

我认为这取决于你的网站:

  • 如果你的站点主要由相同类型的页面组成,而这些页面需要相同的脚本,我会选择A)
  • 如果你有很多不同于你站点的每个子站点的脚本,我会选择B)。将最常用的脚本组合在一个脚本中。如果您的大型脚本不是每个页面都使用,请为其制作单独的脚本
真正知道该做什么的最好方法是测试哪种技术组合为您节省了最多的流量/连接


注:我个人不喜欢让其他人为我的网页提供文件,因为如果CDN失败了,但你的服务器还活着,会发生什么?如果这对您来说不是问题,请尝试从可靠的CDN为您使用的所有库提供服务器。

我认为这归结为以下几点:

  • 有多少页面在整个站点中使用该代码
  • CDN的质量
  • 这是多少代码
  • 使用流行的Javascript包(如jQuery)和使用个人包(只有访问过您的站点的访问者才能使用)之间也有区别

    性能增强可能发生在两个地方:1)浏览器缓存和2)dns缓存,即使文件不是本地存储的,dns服务器也有一个最小化请求时间的路由,甚至临时为文件提供服务

    我建议使用CDN并在本地托管文件。根据您的资源(硬件/带宽),您可能需要使用CDN。最好使用服务器端调度器检查CDN状态,并在适用时重新路由路径

    另外,提醒一些用户选择关闭浏览器缓存。所以缩小你的JS总是一件好事。您应该将JS分为两个文件:1)加载时需要,2)加载时不需要。基本上,首先获得必要的代码,以提高可感知的加载时间。然后加载所有其他附加内容(如幻灯片、颜色变换器等)

    最后一点是使用Expires头,因为如果您不优化它,这一切都不重要。这将真正降低启用缓存的返回访问者的速度。是一个很好的Firefox插件,可以帮助您评估负载性能


    回答您的问题:减少HTTP请求,但对JS的文件大小进行您自己的评估


    (非常极端)你不想要一个10MB的JS文件,否则你的站点将需要很长时间才能加载。由于HTTP开销,您也不需要1000个10KB的文件。同样,用这一点来说明您希望在文件的大小和数量之间取得平衡,正如我前面所说的,将它们打包成所需的性能和所需的性能。

    我认为最好的方法是使用一个缩小的“application.js”文件(包含所有特定于应用程序的javascript)然后使用Google AJAX库API(found)等服务加载jQuery、Prototype等。

    特别是关于业界巨头如何处理客户端脚本的问题,您可以随时查看。stackoverflow.com依靠谷歌版本的jquery库似乎还不错。其他人肯定不会……

    • “将每个脚本合并并缩小为一个大脚本,然后从我自己的CDN提供它。”

      如果您有CDN,我们在谈论什么?:)你是说服务器,对吗

    • “这个行业的大人物是如何处理的?”

      大公司总是使用自己的服务器

    • “…假设这些文件已经从另一个页面下载到客户端计算机上并不愚蠢。”

      不幸的是。事实:

      • 40-60%的用户拥有
      • 浏览器“
      • 库的不同版本正在使用中,只有当它们匹配时才会发生缓存
      • 来自新域的资源创建了一个DNS查找,速度很慢
      • +您需要管理依赖关系

    奥马尔·扎比尔(Omar al-Zabir)经营着一个名为pageflakes的网站,网站上有大量关于如何提高性能的文章。特别说明了在发送到客户端之前,如何在服务器端压缩和组合各种内容

    您还可以使用css图像精灵来减少HTTP请求。它们对常用图像有很大帮助


    *我当然没有一个庞大的生产站点,但这些东西确实有助于节省带宽成本。

    没有什么特别的原因可以说明一个脚本比拆分脚本更快。这是因为浏览器的并发下载是有限的,但不是一个

    我认为应该首先处理同步UI脚本,然后处理“用户活动响应”脚本(如验证等)


    在其他条件相同的情况下,选项B看起来是最好的

    +1用于测试,并使用实际指标为潜在CDN问题选择+1。我也时不时地看到这些问题;更糟糕的是,大多数访问者会认为你的网站是垃圾,因为你的CSS/JS无法加载