网页速度分析 && 网页头文件解析 && 性能优化 && httpwatch工具使用

一:网页整体 分析


1:总用时
2:未知
3:总下载数据量
4:总上传数据量
5:未知
6:DNS 查询次数
7:TCP查询次数
二:速度分析


1:阻塞时长 访问请求前的所用时间,比如等待有效TCP连接。浏览器TCP的并发数有限。
2:connect TCP连接时间
3:get/post 时长
4:服务器响应时长
5:下载时长
6:第一个数据包达到时长 6=2+3+4
7:整个网络过程时长 7=6+5
三:HTTP报头分析

1:左边分析
accept-Encoding
也就是说当服务器返回的是用gzip或deflate协议进行压缩过的内容, 浏览器将自动的进行解压缩 . 这样做可以节省大量的网络带宽,负面影响是加重了服务器的负担。
connect: keep-active 还有close
resin 处理流程
<!-- Configures the socket timeout -->
<socket-timeout>65s</socket-timeout>
<!-- Configures the keepalive -->
<keepalive-max>32</keepalive-max>
<keepalive-timeout>5s</keepalive-timeout>
1.处理完成http请求
2.等待keepalive-timeout秒,如果在这个等待中收到后继的http请求,则跳转到1
3.进入keepalive等待过程,超时时间是socket-timeout秒。如果有后继请求,则跳转到1
4.线程释放到线程池
TCP连接方式 增加keep-active值可以减少TCP连接次数,DNS查询次数。
2:右边分析
max-age:总有效时长(s) 源服务器设置。
Age: 已过时间(s) 这个值CDN计算出的。
浏览器会根据max-age age ,expires 计算缓存是否有效。max-age,age级别高于expires,expires是以时间点为基准,时间点在一些情况下不准(本机的系统设置等)。
Cache-crontrol max-age 最长的有效时间 有服务器端设置 CDN不修改
Date: CDN或者浏览器从源站读取的时间(服务器的时间)
Etag:
服务器首先产生ETag,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端通过将该记号传回服务器要求服务器验证其(客户端)缓存。
  其过程如下:
  客户端请求一个页面(A)。 服务器返回页面A,并在给A加上一个ETag。 客户端展现该页面,并将页面连同ETag一起缓存。 客户再次请求页面A,并将上次请求时服务器返回的ETag一起传递给服务器。 服务器检查该ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304(未修改——Not Modified)和一个空的响应体。
etag的优先级高于 not modified
区别 etag 用于标示 文件本身的一些描述信息,可以自己写算法实现。
如:apache2 中定义的是 3段 inode-size-timestamp
inode 存储文件的 类型,所有者,组,访问模式
size 存储文件的大小
timestamp 存储的是文件内容被修改的时间戳
什么情况下使用 etag:
1:一些文件也许会周期性的更改,但是他的内容并不改变(仅仅改变的修改时间),这个时候我们并不希望客户端认为这个文件被修改了,而重新GET。
2:某些文件修改非常频繁,比如在秒以下的时间内进行修改,(比方说1s内修改了N次),If-Modified-Since能检查到的粒度是s级的。if-non-math的颗粒是SS级的。
为提高访问速度,提高性能,最好把etag关闭 apache 方法:在配置文件中加入 FileETag none
Expires:源站设置的的实效时间点
Last-Modified :文件最后一次修改时间
X-Cache :表示你的 http request 是由 proxy server 回的
四:性能优化
1:减少DNS查询次数,响应时间
增加TTL值 time-to-live 值 缓存时间。有域名解析设置,告知域名解析服务器缓存多长时间,域名解析服务器,通过换算出有效的缓存时长,告知浏览器。
增加keep-alive 时长 TCP连接时间长 DNS不在查询,TCP不用再重新连接。
配置响应速度快的DNS服务器。
IE4.x以上的缓存机制 默认缓存30分钟。如果服务器设置的TTL<30分钟,将以30分钟为准。
参考:support.microsoft.com/kb/263558/zh-cn
注册表地址 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
DnsCacheTimeout 默认值 30分钟
如果IE缓存实效后查找windows系统自身的DNS client 缓存。
浏览器重启会失效,超过浏览器的DNS记录的数量会失效。
ServerInfoTimeOut 默认值为2分钟,即:如果至少每2分钟重用一个主机名,将超过30钟不需要DNS查询。
windows DNS client 系统服务
缓存的时长在与 DNS 资源记录相关联的生存时间 (TTL) 中指定。
cmd --》 ipconfig/displaydns 查看缓存的DNS记录 ipconfig/flushdns 刷新缓存使其失效
注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSCache\Parameters


在注册表中找到并单击以下项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters


在“编辑”菜单上,指向“新建”,单击“DWORD 值”,然后添加下列注册表值:
数值名称:MaxCacheTtl
数据类型: REG_DWORD
默认值:86400 秒(1天)
数值数据:如果您将客户端的 DNS 缓存中的最大 TTL 值降低为 1 秒,则客户端 DNS 缓存看起来已被禁用
以后还需要继续研究,不太清楚IE,DNS client缓存的机制,我测试都是按TTL走的。
2:增加单个TCP的使用时长,增加TCP并发连接数,减少TCP连接响应时间
增加keep-alive值可以增加单个TCP的使用时长。
增加并发数,可以更多的请求分布式的资源数据,加快下载,显示等速度。
分布式部署服务器,做最后一公里原则,选择优质带宽。
IE: 注册表信息KeepAliveTimeout 默认为1分钟,即TCP连接空闲超过1分钟就断开,未断开的情况下DNS不再查询。
3:减少服务器响应时间
部署高配服务器,做系统集群,分布式系统等,优化软件(数据库缓存,页面静态化等)
4:减少下载时长
优质带宽资源,同2. 网页组件压缩gzip等,网页组件制作要求。
5:减少页面的显示加载时长
将页面按DIV+table结构制作,实现部分加载。
做网页组件(如:图片等) 客户端缓存,从本地读取数据。
附:GMT英国格林威治时间 北京时间-8

你可能感兴趣的:(http)