yog*_*ogi 1 c# asp.net performance http web
我想知道哪种方法更好,可以通过多个HTTP请求请求多个小文件,或者一次请求一个大文件
由于我在网上获得矛盾的搜索结果,因此Plz也提供了两种方法的优缺点。
Yahoo页面上的提示之一是“ 最小化HTTP请求”
http://developer.yahoo.com/performance/rules.html#num_http
主要原因是每个请求中都有一个额外的开销。正如雅虎所说:
最终用户响应时间的80%用于前端。大多数时间都与下载页面中的所有组件有关:图像,样式表,脚本,Flash等。减少组件的数量又减少了呈现页面所需的HTTP请求的数量。这是加快页面速度的关键。
在每个ASP.Net调用中,我们还拥有整个页面请求的会话锁定。这意味着对所有用户的所有请求都必须彼此等待,因为会话将锁定页面的其余部分,直到当前页面完成为止。
即使听起来很糟糕,它对于启动站点和小型站点也很有帮助,因为它不仅对会话而言,对所有数据的同步都有很大帮助。
因此,通过多次调用,您将有一个顺序来获取数据,而不是并行地获取数据。
在每个请求上,您还具有从浏览器传播到服务器的cookie。因此,如果您的Cookie接近500个字节,并且您拨打了100次电话,那么您还有50KB的额外数据要移动。可以使用无Cookie的域来解决此问题,但是如果您没有此选项,那么下一步就是尝试减少调用次数。
参考:http : //developer.yahoo.com/performance/rules.html#cookie_free
如果要下载许多图像并将其显示在浏览器上,则针对一个包含sprite的文件图像或其他图像,浏览器可以减少渲染时间,因为浏览器将重新渲染每个图像的每个部分。但是,如果图像包含在一个sprite文件中,则浏览器仅执行一项操作即可呈现它们-因此浏览器拥有较少文件的速度更快。
同样的事情在这里。将所有JavaScript合并到一个或两个文件中后,浏览器即可获取它并一次性解析它们。如果您拥有尽可能多的文件,则浏览器需要一个一个地解析它们。另外,如果您gzip压缩javascript文件,它将比拥有许多较小的文件要好得多。
对我来说,当用户交互时可以使用ajax请求更多数据。这可能是要求额外的数据库调用和计算的信息,您可以在第一次请求时避免这些信息,并且用户可能从未真正要求过它们。
您可以以这种方式拆分请求,仅在用户请求时才获取额外的数据,如果这样做,则将减少数据库调用。
例如,在亚马逊页面上,轮播控件仅在您请求轮播中有更多商品时才加载额外的商品,或者仅当您向下浏览页面时才显示用户历史记录。
归档时间: |
|
查看次数: |
3293 次 |
最近记录: |