网页速度分析 && 网页头文件解析 && 性能优化 && 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结构制作,实现部分加载。

做网页组件(如:图片等) 客户端缓存,从本地读取数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值