Fiddler给网站“优化”

最近访问某知名网站的速度很是慢,有时候须要2分钟还没彻底打开,页面展现了一半就卡住,而后等半天才继续显示下面部分。这种状况已经有几个月了,不知道是他们服务器缘由仍是我所在网络的问题,可是基本上在其余网络访问速度也慢,若是是网站自身的问题,我天然没办法解决,只能本身动手,先看看问题出在哪里,而后分析一下有没有可能绕过相关问题。因而用上了一个很好的HTTP分析工具,Fiddler Web Debugger php

Fiddler的功能很强大,它不只能够查看HTTP的通讯信息,也能够进行分析,从而发现通讯过程当中的问题,为优化网站页面和提升性能提供依据。另外,它提供了对url请求进行重定向处理(AutoResponder)的功能,用户能够在请求url时进行自定义处理,这也就为以制定方式访问页面提供了可能性,这也是本文依靠的主要功能。css

这个软件的具体使用方法能够参考《HTTP调试工具:Fiddler的使用方法介绍》本文只介绍如何用它来解决实际问题。html

步骤一:获取与网站页面的通讯信息web

为了保证只监控到指定网页的通讯信息,我只打开了一个IE,而且在fiddler设置只监控web browers(默认是All Processs)另外经过fiddler清除了IE缓存,从而能获取更加真实页面加载时间。而后在IE中输入相应网址(就不具体指明了)进行访问,这时能够看到fiddler左侧出现许多访问这一网站的请求url,等待中……。直到IE状态栏显示加载完毕的提示“完成”,这时中止fiddler的通讯捕获,这样就完成了通讯捕获。如下是局部抓图:正则表达式

1

步骤二:分析性能瓶颈缓存

接下来就是分析上面各个sessions(请求),找出哪些请求致使了加载页面慢,我通常按照以下步骤:服务器

(1)找到不正确的请求网络

全选全部sessions,而后,选择右面的Statistics功能,这样就能够统计出这些sessions的整体信息,以下图(部分):session

2

这里我关注的是从请求开始到返回请求的整个时间,这里消耗了2分56秒(Sequence (clock) time),显然,这是不能够接受的速度。而后我发现,在response codes中,统计的HTTP/502有12个,要知道,Http 5xx表明的是服务器错误,通常来讲,这种错误会致使服务器反应很长时间才返回给客户端一个错误的代码信息,从而可能致使请求速度的急剧降低。有可能这个网站就是由于这些错误请求致使加载页面慢的。查了一下:工具

502 - 网关错误:若是试图运行的 CGI 脚本不返回有效的 HTTP 标头集,将出现此错误消息。若要解决此问题,必须调试 CGI 应用程序,以肯定它为何会将无效的 HTTP 信息传递给 IIS。

也就是说有12个url请求出现了这一错误。其实在左侧sessions中,也能够看出来,它以红色惊叹号开头,而且能够知道请求的url等信息。

3

 

(2)经过timeline功能查看全部消耗的时间

全选sessions后,在界面右侧的timeline功能,能够以图形方式统计请求各个文件耗费的时间(这里会以请求的文件为单位,将那些请求文件相同可是参数不一样的url合并统计):

4

其中横坐标是时间,纵坐标是请求文件,能够分析一下到底是页面仍是图片等加载时间比较长,经过分析,确实是那12个错误请求致使的加载慢,其余的css、js和图片,消耗的时间能够忽略。

步骤三:解决性能瓶颈

性能问题本该是网站来解决的,我没那个能力去真正解决性能问题,这里只是经过别的方法,来绕过致使瓶颈的问题罢了。分析了一下这12个错误请求url,归根结底就是一个adjs.php和gmjs.php,固然每一个请求的参数有所不一样。这其实在加载页面时候经过他们这些sessions前面图标就能够看出是有问题的:

截图00

 

下箭头表示正在下载,然而,我观察了,在这个请求时,下载时间很长,卡住了好久,而后变成红色叹号图标,才继续请求别的url。

分析adjs.php和gmjs.php文件,从命名来看,应该是与页面中广告有关的,对于用户来讲,不要这个请求也应该不影响浏览网页吧,因此这里就是要想办法在请求时候,若是是关于这两个文件的请求,想法子绕过去就行了。

这就用上了fiddler的AutoResponder功能。开篇介绍了,这个功能能够对请求进行拦截,并进行自定义处理。

首先选择“AutoResponder”选项卡,而后选择“Enable Automatic Responses”,选择“add”按钮来添加一个规则:

5

我这里选择若是请求包含“adjs/php ”(隐去前面的具体网址),则放弃(*drop)不去请求,固然这里的字符串是能够用正则表达式实现更为复杂的字符串匹配,另外,也能够选择其余匹配后的处理方式,好比让本地模拟一个response,而不用真的到服务器请求了。

选择保存。再次按照步骤一,加载页面,cool,瞬间加载完毕,不影响浏览,广告少了一些,看来那两个致使加载慢的页面就是与广告相关的。

这种经过fiddler来过滤rul请求的功能,还能够实现更多功能,好比过滤掉对于音频、视频、图片等的请求,只获取浏览者须要的内容。

相关文章
相关标签/搜索