适应读者

web开发工程师

对fiddler有基本了解的的同学

对web性能优化感兴趣的同学

本文不会讲太多fiddler基本概念,基本用法,以及安装步骤,所以希望知道以上知识的同学,请在fiddler的官方网站上去了解,官方网站http://www.fiddler2.com/fiddler2/。

什么是fiddler

为了开一个头,还是先简单介绍下fiddler:

Fiddler是一个web调试代理。它能够记录所有客户端和服务器间的http请求,允许你监视,设置断点,甚至修改输入输出数据,fiddler包含了一个强大的基于事件脚本的子系统,并且能够使用.net框架语言扩展。更多详细的信息我们可以在fiddler的官方网站上去了解,http://www.fiddler2.com/fiddler2/,上面详细介绍了fiddler的用法与扩展。

我们为什么要限速

限速对于web前端研发是非常重要的,由于开发者的机器一般配置都很高,并且是在localhost下来调试程序,所以很难模拟到用户的真实使用情况,如正在下载js,css等静态资源的时候,页面的一个渲染情况。当网速很慢的时候,我们更希望看到的是先渲染出用户界面,而不是让用户看到一片空白。那么这个时候,网络限速就能很方便在localhost针对类似的情况来做性能调试与优化。

fiddler模拟限速的原理

我们可以通过fiddler来模拟限速,因为fiddler本来就是个代理,它提供了客户端请求前和服务器响应前的回调接口,我们可以在这些接口里面自定义一些逻辑。Fiddler的模拟限速正是在客户端请求前来自定义限速的逻辑,此逻辑是通过延迟发送数据或接收的数据的时间来限制网络的下载速度和上传速度,从而达到限速的效果。

那么我们的算法就是

1000/下载速度 = 需要delay的时间(毫秒),

比如50kb/s 需要delay200毫秒来接收数据。

通过fiddler-script模拟限速

Fiddler-script是fiddler的提供的一个强大的子脚本系统,这个系统可以调用fiddler的接口来完成开发者自定义的功能。

我们可以在fiddler-script提供的OnBeforeRequest方法里增加以下两句代码:

// Delay sends by 300ms per KB uploaded.

oSession["request-trickle-delay"] = "300";

// Delay receives by 150ms per KB downloaded.

oSession["response-trickle-delay"] = "150";

每一次我们针对自己写的网站测试限速时,可以根据自己的需要更改以上效果的值,比如延迟的时间越长,限速就越明显。

我们还可以做的更好- 通过c#写fiddler的限速插件

虽然我们可以通过fiddlerscript来模拟限速,但还是会有以下不方便的地方:

1.每次想模拟不同网速时都要去更改fiddlerscript的那两句代码,有没有更好的方式来修改,比如在界面修改。 2.没有办法模拟网速不稳定的情况(网速时快时慢)。

我们可以通过fiddler更强大的扩展功能来解决上述两个问题,fiddler是可以加入一个Inspector插件对象,来使用.net下的任何语言来编写Fiddler,我这次选择用c#来扩展fiddler插件。

我们引入一个c#类库项目,引用fiddler的Inspector的插件对象,继承IAutoTamper类,重载onload方法与AutoTamperRequestBefore方法。

Onload:是fiddler在装载此插件时回调的方法,AutoTamperRequestBefore与fiddlerscript的onbeforerequest回调事件功能相同,都可以在request前请求自定义逻辑。

我们可以通过winform表单来为插件开发界面。

再通过用户配置的下载速度与上传速度来推算出下载每kb/s与上传每kb/s所delay的时间。 从而调用与fiddlerscirpt同样实现的接口

oSession["request-trickle-delay"] = [delay time];

oSession["response-trickle-delay"] = [delay time];

我们也可以在AutoTamperRequestBefore里给不同的随机数[1-500]来模拟每次请求可能会碰到网速不稳定的情况。

插件限速的效果

当我们设置下载速度与上传速度都为10kb/s,并且清楚掉缓存时,ie下访问http://www.lu.com的效果。可以看到我们主页是边下载数据边渲染页面的,这说明我们http://www.lu.com在网速较低时,也不会出现一个空白页面,让用户有不好的体验。

但如果访问页面较大的网站,比如:http://www.lu.com时,同样的10kb/s网速,就会长时间的有一个空白页面,FE可以针对这种情况来分析js的阻塞与html的渲染。

总结:

Fiddler是web开发的利器,我们还除了利用它来限速之外,还可以通过文件匹配来实现本地开发来调试线上环境的等等更多的功能。通过限速我们可以看到在网络速度很低的时候页面的载入与渲染效果,对于FE工程师是非常有帮助,也有助于让项目的开发人员关注更多不同环境下的效果。

fiddler限速_基于fiddler来模拟限速相关推荐

  1. 基于wincc的虚拟电梯设计_基于WINCC的模拟电梯设计

    : 151********@163.com 基于 WINCC 的电梯模拟运行控制系统设计 冯鹏辉 谭兮 郭少校 刘国营 ( 湖南工业大学,湖南 株洲 412008) 摘要: 电梯的运行是电梯与大楼及各 ...

  2. java 写字板源代码_基于JAVA的模拟写字板的设计与实现(含录像)

    基于的模拟写字板的设计与实现(含录像)(任务书,开题报告,中期检查表,外文翻译,毕业论文18800字,程序代码,答辩PPT,答辩视频录像) 摘要 目前,很多新的技术领域都涉及到了Java语言,Java ...

  3. python获取app信息的库_基于Python的模拟登陆获取脉脉好友信息

    代码已经上传到github上 简介: 这是一个基于python3而写的爬虫,爬取的网站的脉脉网(https://maimai.cn/),在搜索框中搜索"CHO",并切换到" ...

  4. lisp绘制直齿圆柱齿轮_基于AutoLISP的模拟滚齿以及滚刀齿形验证

    AutoLISP是由Autodesk公司开发的一种LISP程序语言,LISP是List Processor的缩写.通过autolisp编程,可以节省工程师很多时间.AutoLISP语言作为嵌入在Aut ...

  5. Fiddler——模拟限速

    模拟限速的设置: 1,定位脚本中修改限速的位置 2,根据限速需要,修改上传和下载的速率 3,保存脚本的修改 4,启用限速模式 6,保证fiddler正常运行,输入网址或者下载文件,观察效果

  6. Fiddler报文分析-断点应用、模拟网络限速-HTTPS的 拦截

    目录 一.报文分析 Statistics 请求性能数据 检查器(Inspectors) 自定义响应(AutoResponder) Composer Composer的功能就是用来创建HTTP Requ ...

  7. 基于fiddler的网络爬虫校园网自动登陆系统

    最近校园网(需要WEB登陆)不太稳定,总是掉线,于是想写一个基于网络爬虫的校园网自动登陆系统,让程序自动每隔一段时间自动检测网络连通性,查了一些资料,最后用了Fiddler软件进行网络监听,对网页ht ...

  8. 华为#S系列交换机和E系列交换机基于IP网段配置限速

    S系列交换机(S1700除外)和E系列交换机基于IP网段配置限速 是通过ACL和MQC实现的,关键配置如下: 基于源地址 system-view //进入系统视图 [HUAWEI] acl 3000 ...

  9. 基于Matlab的交通限速标志的识别系统 数字图像处理大作业

    本大作业为基于Matlab的交通限速标志的识别系统, 考虑到在科技发展的今天,智能汽车行业发展迅速,所以交通限速标志的快速检测及识别对车辆的安全行驶极为重要,因此本系统可以检测到图中的交通限速标志并对 ...

  10. 鸿蒙开发板Hi3861模拟SPI驱动JLX12864_LCD(UC1701X)_基于code-2.0

    鸿蒙开发板驱动晶联讯LCDjlx12864_lcd_hi3861源码-C文档类资源-CSDN下载鸿蒙开发板驱动晶联讯LCDjlx12864_lcd_hi3861源码博文介绍https://t更多下载资 ...

最新文章

  1. 服务器物理内存高,服务器的物理内存高
  2. javascript正则表达式小结
  3. java心得---java语言基础
  4. 【Python】青少年蓝桥杯_每日一题_5.03_判断是否是三角形
  5. wordpress linux 目录,快速搭建WordPress(Linux)
  6. CompletableFuture详解~supplyAsync
  7. 双目立体视觉匹配算法-----SAD匹配算法、BM算法、SGBM算法、GC算法
  8. makefile:带你了解一种常用于GNU gcc编译的工具语言
  9. 11月百度凤巢升级后的变化
  10. 将输出结果以json类型打印在控制台上_系列文章:Kubernetes中日志的正确输出姿势...
  11. CLRC663寄存器说明中文版
  12. 第五模块 常用邮件沟通场景(1):求职信
  13. ios开发的p12和provision
  14. python 音速_Python:在播放过程中更改音速
  15. NetSpectre:通过网络读取任意内存
  16. word2019 论文排版之论文中的图表跟随章节插入题注(转)
  17. Aspose.Word企业案例:Acumen Fuse 使用 Aspose 组件将项目分析数据导出到 Microsoft Word 和 Excel
  18. android实现基于表情识别和敲击识别的认证系统,表情识别支持自动的连续隐藏式拍照
  19. HTML+js图片验证码编写
  20. ie8下实现预览pdf

热门文章

  1. iphone 手势编程---值得回忆的API
  2. python随机猜数字游戏_python,random随机数,简单的python猜数字游戏
  3. 遥感影像几何校正模型(RPC模型)
  4. Blender 基础 骨架-02 骨架的各种呈现方式
  5. 房子如何过户、学区房应注意啥 房博士热点问题集锦
  6. 上海生活品质远不如深圳——深圳与上海比较
  7. phalapi init.php,PhalApi:[1.12] 参数规则:接口参数规则配置
  8. Usability Testing Demystified
  9. 计算机辅助英语听说考试系统,英语听说考试
  10. 用Python BeautifulSoup写的一份多线程图片抓取的脚本