首先,一个页面所需要访问的域名数量为n,那么就需要n次DNS查找,而DNS查找通常是blocking call,就是说在得到结果之后才能继续,所以越多的DNS查找,反应速度就越慢;

雅虎的YSlow插件的规则之一:Rule 9 – Reduce DNS Lookups提到:

Reducing the number of unique hostnames has the potential to reduce the amount of parallel downloading that takes place in the page. Avoiding DNS lookups cuts response times, but reducing parallel downloads may increase response times. My guideline is to split these components across at least two but no more than four hostnames. This results in a good compromise between reducing DNS lookups and allowing a high degree of parallel downloads.

说说自己的理解:

首先,一个页面所需要访问的域名数量为n,那么就需要n次DNS查找,而DNS查找通常是blocking call,就是说在得到结果之后才能继续,所以越多的DNS查找,反应速度就越慢;

其次,并行下载(parallel downloading)由两个因素决定:到服务器的连接数量,以及每个连接内部的流水线请求数量。

一个页面里到服务器的连接数量由两个因素决定:

页面所需访问的域名数量,和浏览器所允许的最多连接数。

后者在Mozilla/Firefox中还由浏览器所允许最多连接数(network.http.max-connections,缺省为24),和每个服务器所允许的最大连接数(network.http.max-connections-per-server,缺省为8)决定。如果max-connection-per-server是m,那么一个需要访问n个不同域名的主机的页面,最多可以有n*m个连接 - 前提是n*m小于max-connections的值;

每个连接内部的流水线请求(pipelined requests)的数量也是浏览器的参数(Firefox上由network.http.pipelining来设置,缺省为4),前提是服务器支持persistent connection(比如在Apache设置KeepAlive为On)。之前的例子就不需要那么多的连接了(对服务器和浏览器来说,一个连接里多个流水线请求能够比多个并行连接更好些),假设pipelining的值为p,那么就可以只使用n*m/p个连接了。(BTW,对Firefox做优化的一些插件其实就是对上面的几个设置做调整)

所以减少页面内不同hostname的数量不一定会减少并行下载的数量,也要看所需要的请求(css, javascript, 图片等)的数量,因此YSlow的解释说是potentially。

网页效率之DNS查找和并行下载相关推荐

  1. python软件在下载库文件_python – 并行下载多个文件的库或工具

    我正在寻找一个python库或一个命令行工具来并行下载多个文件.我目前的解决方案是顺序下载文件缓慢.我知道你可以很容易地在python中编写一个半条线程的线程解决方案,但是在使用线程时总是遇到麻烦的问 ...

  2. 从减少DNS查找来优化网站

    Internet是通过IP地址来查找服务器的.由于IP地址很难记忆,通常使用包含主机名的URL来取代它,但当浏览器发送其请求时,IP地址仍然是必需的.这时,Domain Name System(DNS ...

  3. 【源码分享】用Java写的网页图片、CSS、JavaScript分类下载器

    前段时间老师让我们要做一个JavaEE项目,是一个电子商务网站--中国鲜花网,前台模板就用这个网站的,但是用浏览器直接下载来的图片和样式表等文件全在一个文件夹,需要给它批量替换,最要命的是浏览器的这个 ...

  4. [爬虫学习笔记]C# 使用 ScrapySharp 并行下载天涯图片

    最近因为一个作业需要完成CNKI爬虫,研究爬虫架构的时候发现了这个疑似移植于Python的著名开源爬虫框架Scrapy的ScrapySharp,然而在网上寻找之后只发现了这个F#的Demo,就使用原文 ...

  5. 评测网页效率的工具—YSlow

    2019独角兽企业重金招聘Python工程师标准>>> [转]评测网页效率的工具-YSlow 本文转自:http://www.yuloo.com/news/2008-06-04/89 ...

  6. 优化网站设计(九):减少DNS查找的次数

    前言 网站设计的优化是一个很大的话题,有一些通用的原则,也有针对不同开发平台的一些建议.这方面的研究一直没有停止过,我在不同的场合也分享过这样的话题. 作为通用的原则,雅虎的工程师团队曾经给出过35个 ...

  7. C语言线程池实现并行下载上传,匹配百度网盘功能

    1:数据库的设计与框架大纲 百度网盘的功能实现,肯定是需要借助数据库存储文件信息,和用户信息的,以及多点下载和反向代理.负载均衡.打算手撕一波百度网盘,来作为我的毕设项目. 设计的主要关键点在于数据库 ...

  8. 网站加速最佳实践 – 减少DNS查找

    参考: http://developer.yahoo.com/performance/rules.html#dns_lookups DNS 就像电话本,根据电话本查找指定网站的 IP 地址.查找一次 ...

  9. python爬虫并发并行下载

    1一百万个网站 1用普通方法解析Alexa列表 2复用爬虫代码解析Alexa列表 2串行爬虫 3并发并行爬虫 0并发并行工作原理 1多线程爬虫 2多进程爬虫 4性能对比 这篇将介绍使用多线程和多进程这 ...

最新文章

  1. HSQL入门及使用指南
  2. PyQt5 技巧篇-复选框绑定行内容,全选、清空、展示选中的内容功能实现演示,设置复选框选中,检查复选框选中状态
  3. JavaFX技巧5:可观察
  4. RHEL5.8配置开机自动挂载磁盘
  5. Python-cvxopt库的使用(2)(解决QP问题)
  6. MOSS 工作流 vs2008+win2008
  7. ProtoBuf和Netty的简单使用
  8. WAV音频文件的分析
  9. Gerber文件总结
  10. 图说Python菜鸟版:第18章 JSON文件解析
  11. 【HTML】设置页面字体
  12. 点赞功能模块-文章点赞功能实现
  13. 两年网罗13位扫地僧,阿里达摩院最新架构完整曝光
  14. VUE后台管理系统权限管理
  15. 自建低成本代码托管与文档管理平台经验分享
  16. Ogre导入3Dmax模型注意事项
  17. 分享 | 快递鸟电子面单API参数接口
  18. 8. 面向对象 -- 继承
  19. python 儿童 游戏_防止孩子玩游戏的Python小程序
  20. 因为喜欢德国的严谨,所以我主动找到SAP上云

热门文章

  1. linux停止mysql后又自己启动,Linux上 mysql启动/停止/重启/开机启动/开机禁止启动...
  2. 直接插入排序与希尔排序
  3. vue 怎么全局到入常量_午后躺椅上看关于Vue的20点
  4. opencv中Range类的使用
  5. keras 的 example 文件 lstm_stateful.py 解析
  6. 深入理解 wpa_supplicant(一)
  7. 洛谷P1896 [SCOI2005]互不侵犯 状压dp+位运算
  8. qt能使用logback_使用ELK系统分析SpringBoot日志
  9. ceph bluestore 源码分析:ceph-osd内存查看方式及控制源码分析
  10. linux history记录格式修改