多个小文件v / s一个大文件用于HTTP请求

yog*_*ogi 1 c# asp.net performance http web

我想知道哪种方法更好,可以通过多个HTTP请求请求多个小文件,或者一次请求一个大文件

由于我在网上获得矛盾的搜索结果,因此Plz也提供了两种方法的优缺点。

Ari*_*tos 5

Yahoo页面上的提示之一是“ 最小化HTTP请求”

http://developer.yahoo.com/performance/rules.html#num_http

主要原因是每个请求中都有一个额外的开销。正如雅虎所说:

最终用户响应时间的80%用于前端。大多数时间都与下载页面中的所有组件有关:图像,样式表,脚本,Flash等。减少组件的数量又减少了呈现页面所需的HTTP请求的数量。这是加快页面速度的关键。

特别适用于ASP.Net

在每个ASP.Net调用中,我们还拥有整个页面请求的会话锁定。这意味着对所有用户的所有请求都必须彼此等待,因为会话将锁定页面的其余部分,直到当前页面完成为止。

即使听起来很糟糕,它对于启动站点和小型站点也很有帮助,因为它不仅对会话而言,对所有数据的同步都有很大帮助。

因此,通过多次调用,您将有一个顺序来获取数据,而不是并行地获取数据。

参考:jQuery Ajax对Web服务的调用似乎是同步的

完全取代ASP.Net的会话

Cookies开销

在每个请求上,您还具有从浏览器传播到服务器的cookie。因此,如果您的Cookie接近500个字节,并且您拨打了100次电话,那么您还有50KB的额外数据要移动。可以使用无Cookie的域来解决此问题,但是如果您没有此选项,那么下一步就是尝试减少调用次数。

参考:http : //developer.yahoo.com/performance/rules.html#cookie_free

精灵

如果要下载许多图像并将其显示在浏览器上,则针对一个包含sprite的文件图像或其他图像,浏览器可以减少渲染时间,因为浏览器将重新渲染每个图像的每个部分。但是,如果图像包含在一个sprite文件中,则浏览器仅执行一项操作即可呈现它们-因此浏览器拥有较少文件的速度更快。

脚本和CSS

同样的事情在这里。将所有JavaScript合并到一个或两个文件中后,浏览器即可获取它并一次性解析它们。如果您拥有尽可能多的文件,则浏览器需要一个一个地解析它们。另外,如果您gzip压缩javascript文件,它将比拥有许多较小的文件要好得多。

何时使用更多请求

对我来说,当用户交互时可以使用ajax请求更多数据。这可能是要求额外的数据库调用和计算的信息,您可以在第一次请求时避免这些信息,并且用户可能从未真正要求过它们。

您可以以这种方式拆分请求,仅在用户请求时才获取额外的数据,如果这样做,则将减少数据库调用。

例如,在亚马逊页面上,轮播控件仅在您请求轮播中有更多商品时才加载额外的商品,或者仅当您向下浏览页面时才显示用户历史记录。