HTTP调试工具:Fiddler 介绍二

Fiddler 反向代理调试:修改http请求、修改http响应 Fiddler 抓包调试   Fiddler 是一款功能强大的 http 抓包工具,对于 http 请求响应抓包调试十分实用,可以很方便查看 http 请求,http 响应的内容,修改 http 请求后重新发送,拦截 http 响应修改后重新响应;   Fiddler 基本界面介绍 以下是 fiddler 主界面的工具栏   其中“切换代理模式”,fiddler 有以下 2 种代... 阅读详情
 

学习如何通过Fiddler建立一个速度更快的网站。在这篇文章中,我们将使用Fiddler去探究HTTP的性能,缓存,以及压缩。

如果你要是没有安装和配置过Fiddler, 请从文章的第一篇开始。

 

HTTP性能总览

毫无疑问用户都喜欢访问速度快的网站。用户是非常的不耐烦,除非你的网站是没有竞争对手,换句 话就是处于垄断地位的。如果你的访问者来自世界各地,那你就必须要保证你的网站在执行效率方面要非常好,甚至要更加标准。作为一个国际化的网络连接点,通 常要受到来自两个方面的压力:高访问量以及低带宽。

 

在第一次至关重要的访问中,用户必须要下载每一个内容片断,来生成页面,包括JS,CSS,Images,HTML,如果你的页面太难加载(包括IIS接到请求执行并返回给客户端HTML),访问者也许就会离开你的页面!

通过暴露所有的HTTP通讯,Fiddler很容易得向你展示哪些文件经常被用于生成一个页面,

Shift+click 可以在Fiddler左边框的会话列表中多选会话,来计算那些被选会话的“页面总重量”。那些被转换成字节的数量。

 

如果你想让你的客户在第一次访问的时候就留下深刻的印象 ,那么最好的,也是唯一的途径就是返回给客户更少的文件。

 

1 使用更少的图画

2 将所有的CSS浓缩到一个CSS文件中

3 将所有的脚本浓缩到一个JS文件中

4 简化你的页面时间

5 使用HTTP压缩

 

如果要是你已经对用户的第一次来访的性能进行了优化,那么你可以通过Http 缓存的优势来使得你的网站访问速度更快!

 

HTTP 缓存介绍

 

2种方式来提升你的web 应用程序的速度:

减少请求和响应的往返次数

减少请求和响应的往返字节大小。

 

HTTP缓存是最好的减少客户端服务器端往返次数的办法。缓存提供了提供一种机制来保证客户端 或者代理能够存储一些东西,而这些东西将会在稍后的HTTP 响应中用到的。(即第一次请求了,到了客户端,缓存起来,下次如果页面还要这个JS文件或者CSS文件啥的,就不要到服务器端去取下来了,但是还是要去服 务器上去访问一次,因为请求要对比ETAG值,关于这个值,我将会在下次翻译中介绍其作用)这样,就不用让文件再次跨越整个网络了。

 

缓存相关的请求头

 

为了提高性能,微软的IE和其他的web客户端总是想尽办法来维持从远程服务器上下载下来的本地的缓存。

当客户端需要一个资源(html,css.js…),他们有3种可能的动作:

1 发送一个一般的HTTP请求到远程服务器端,请求这个资源。

2 发送一个有条件的HTTP请求到服务器,条件就是如果它不同于本地的缓存版本。

3 如果缓存的拷贝可用,就使用本地的缓存资源。

 

当发送一个请求,客户也许会使用如下的几个HEADER

 

Table 1. Client Cache Headers

Pragma: no-cache

The client is unwilling to accept any cached responses from caches along the route and the origin server must be contacted for a fresh copy of the resource.

If-Modified-Since: datetime

The server should return the requested resource only if the resource has been modified since the date-time provided by the client.

If-None-Match: etagvalue

The server should return the requested resource if the ETAG of the resource is different than the value provided by the client. An ETAG is a unique identifier representing a particular version of a file.

 

1 Pragma:no-cache   表明客户端不愿意接受缓存请求,它需要的是最即时的资源。

2 If-Modified-Since: datetime 表明如果这个资源自从上次被客户端请求,就已经修改了,那么服务器就会返回给客户端最新的。

3 If-None-Match: etagvalue 如果客户端资源的ETAG值跟服务器端不一致了,那么服务器端返回最新的资源。ETAG就是一个唯一的ID,用来表示一个文件的一个特定的版本。

 

如果要是这些有条件的请求,也就是含有If-Modified-Since 或者 If-None-MatchHeader头的请求,服务器将会以HTTP/304 Not Modified 来作为响应,那么客户端就知道可以使用客户端的缓存了。否则,服务器将会返回一个新的响应并且客户端就会抛弃过期的缓存资源。

你可以观察2个连贯的请求,来请求同一个图片,你会在Fiddler中发现:在第一个本地缓存 版本中,服务器返回一个含有ETAG的文件,和一个含有最后修改日期的文件,在这个第一次的请求会话中,一个本地的缓存版本已经可以使用了。这样一来,一 个有条件的请求就被创建出来。然后你再次请求这个图片的时候,他就就会响应一个本地缓存的文件,当然前提是第一次缓存的图片的ETAG值或者If- Modified-Since 值跟服务器上匹配的话,服务器就响应一个304给客户端。

Session #1

 

GET /images/banner.jpg HTTP/1.1

Host: www.bayden.com

 

HTTP/1.1 200 OK

Date: Tue, 08 Mar 2006 00:32:46 GMT

Content-Length: 6171

Content-Type: image/jpeg

ETag: "40c7f76e8d30c31:2fe20"

Last-Modified: Thu, 12 Jun 2003 02:50:50 GMT

 

Session #2

 

GET /images/banner.jpg HTTP/1.1

If-Modified-Since: Thu, 12 Jun 2003 02:50:50 GMT

If-None-Match: "40c7f76e8d30c31:2fe20"

Host: www.bayden.com

 

HTTP/1.1 304 Not Modified

 

 

因为一个HTTP304响应仅仅包含头,没有body,所有它在穿越互联网的时候要比携带了资源的快很多,尽管如此,HTTP/304响应需要一个服务器的往返,但是通过细心的设置响应头,web程序员可以消除这种因素,甚至是有条件的请求。

缓存相关响应头

 

通常缓存机制是由响应头来控制的。HTTP规范描述了Header控制缓存,The optional Cache-Control,Expires(过期)。

Expires头包含一个绝对的日期,当超过此日期,它将不会被考虑更新了。

 

Table 2. Common Cache-Control Headers

Value

Meaning

public

The response may be stored in any cache, including caches shared among many users.

private

The response may only be stored in a private cache used by a single user.

no-cache

The response should not be reused to satisfy future requests.

no-store

The response should not be reused to satisfy future requests, and should not be written to disk. This is primarily used as a security measure for sensitive responses.

max-age=#seconds

The response may be reused to satisfy future requests within a certain number of seconds.

must-revalidate

The response may be reused to satisfy future requests, but the origin server should first be contacted to verify that the response is still fresh.

Cache-Control头的参数设置:

Public 响应会被缓存,并且在多用户间共享。

Private 响应只能够作为私有的缓存,不能再用户间共享。

No-cache 响应不会被缓存

No-store 响应不会被缓存,并且不会被写入到客户端的磁盘里,这也是基于安全考虑的某些敏感的响应才会使用这个。

Max-age=#seconds 响应将会某个指定的秒数内缓存,一旦时间过了,就不会被缓存。

Must-revalidate 响应会被重用来满足接下来的请求,但是它必须到服务器端去验证它是不是仍然是最新的。

 

注意:

如果你要想在iis中配置缓存,请参阅温软的知识技术文章:

·                  How to Modify the Cache-Control HTTP Header When You Use IIS.

你可以学习更多关于在asp.net中使用缓存的知识文章:

·                  How To Cache in ASP.NET by Using Visual C# .NET.

如果你发现你经常在你的网站上更新文件,但是并没有更改文件名字,那你就必须要非常小心地设置 你的缓存生存时间。例如:如果你要一个thisyear.gif图片文件显示当前的年份在网站上,你需要保证这个缓存过期时间不能超过一天,否则一个用户 在12月31号访问你的网站的时候,在1月1号就不能显示正确的日期。

由于某些原因,服务器可能会设置:Progma:no-cache 头,Cache-control:no-cache

Header中的参数:Vary 是一个缓存信号,Vary:User-Agent表示缓存当前的响应,但是仅限于当发送同样的User-Agent 头的时候。指令 Vary:* 就相当于Cache-Control:no-Cache。

Vary就相当于asp.net中的缓存的参数一样,意思是根据什么来缓存,如果要是知道asp.net的缓存的使用方法,就很容易明白这个参数的意思。

 

使用HTTP会话列表,Fiddler用户可以看到在页面里包含的HTTP缓存头。

 

Fiddler 会话列表

如果响应不包含Expires或者Cache-Control,那么客户端就会被迫作为一个有条件的请求,来保证所有的资源都是最新的。

 

有条件的请求和WinInetCache

IE通过Microsoft windows Internet Services来最大程度的利用缓存服务。WinInet允许用户配置缓存的大小和行为,设置缓存进行如下操作:

1 打开IE,

2 工具选项,选择Inrernet选项,在一般子选项中,临时文件夹内,点击设置

下图就是选村的四种设置:

 

标记性能问题:

你可以使用Fiddler的自定义规则来标记某些你需要的,比如如果某个响应大于25KB,你可以把当前的Session标记为红色,更加醒目。以下代码都是在OnBeforeResponse事件中:

// Flag files over 25KB
   if (oSession.responseBodyBytes.length > 25000){
      oSession["ui-color"] = "red";
      oSession["ui-bold"] = "true";
      oSession["ui-customcolumn"] = "Large file";
   }
同样,你也可以标记响应并不指示缓存信息。
   // Mark files which do not have caching information
if (!oSession.oResponse.headers.Exists("Expires") &&
!oSession.oResponse.headers.Exists("Cache-Control")){
      
oSession["ui-color"] = "purple";
      oSession["ui-bold"] = "true";
   }

介绍HTTP压缩

所有的目前流行的WEB服务器和浏览器都提供HTTP压缩支持。HTTP压缩可以非常显著地降 低客户端和服务器端的通讯量。节省超过50%的HTML,XML,CSS,JS等文件。一个浏览器发送一个信号给服务器,他可以介绍HTTP压缩过的内 容,并且会把客户端所支持的压缩类型放在请求的Header中,例如:考虑如下的请求:

GET / HTTP/1.1
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Host: search.msn.com

这个 Accept-Encoding 头表明IE将愿意接受GZIP格式的和DEFLATE格式的压缩响应。

相应的响应如下:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/6.0 --Microsoft-HTTPAPI/1.0
X-Powered-By: ASP.NET
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Tue, 15 Feb 2006 09:14:36 GMT
Content-Length: 1277
Connection: close
Cache-Control: private, max-age=3600
 

你可以使用Fiddler来解压缩这些数据。实验表明,使用HTTP压缩能大量减少数据往返, 一个普通的CSS文件甚至能减少80%!当然压缩是以牺牲CPU性能为代价的。特别是压缩动态文件,但是一般的权宜之策是压缩例如JS,CSS等静态文 件,因为他们在第一次压缩后,就会被存储在服务器上,如果要压缩asp.net动态文件,一定要有个权衡才行

如果您现在还是不满足您的程序优化,那么你还可以参看这篇文章,

Ten Tips for Writing High-Performance Web Applications

 

 原文地址 http://www.cnblogs.com/FrameWork/archive/2006/10/16/530827.html

 

来源 :http://blog.chinaunix.net/u2/66539/showart_1071484.html

Fiddler工具介绍 1.1:Fiddler工具介绍 1.1-1Fiddler工具简介 Fiddler是比较好用的Web代理调试工具之一,它能记录并检查所有客户端与服务端的HTTP/HTTPS请求,能够设置断点,篡改及伪造Request/Response的数据,修改hosts,限制网速,http请求性能统计,简单并发,接口测试,辅助自动化测试等。现在抓包工具成为测试人员的必备使用工具,开发人员也在普遍使用,进行问题的定位分析,是非常有助于工作的一款工具。已更新至5.0版本,Fiddler官网下载地址:https://www. 阅读详情

相关推荐

一、Fiddler抓包工具 — Fiddler介绍与安装

说明: 代理就是在客户端和服务器之间设置一道关卡,客户端先将请求数据发送出去后,代理服务器会将数据包进行拦截,代理服务器再冒充客户端发送数据到服务器; 同理,服务器将响应数据返回,代理服务器也会将数据拦截,再返回给客户端。Fiddler可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据。 其他功能包括:(1)先来了解一下B/S架构(2)Fiddler工作原理 Fiddler的工作原理,是它在客户端和服务端之间搭建了一层proxy,所有的请求都会经

测试-八戒 5629

FiddlerScript学习一:修改Request或Response

前两天因项目需要,简单看了一下FiddlerScript,功能挺强的,今天有时间仔细看一下,做个笔记。 修改Request或Response 修改Request和Response要在FiddlerScript中的OnBeforeRequest和OnBeforeResponse函数中添加规则即可。OnBeforeRequest函数是在每次请求之前调用,OnBeforeResponse函数是在每次...

細水、長流√的专栏 2124

全面解析Fiddler5:HTTP调试与诊断工具

在当今的IT行业中,掌握网络协议和调试工具对于开发者和测试人员来说至关重要。Fiddler5作为一种强大的HTTP协议调试工具,以其用户友好的界面和丰富的功能,已成为专业人士不可或缺的工具之一。它提供了全面的会话管理和数据包分析功能,使用户能够高效地进行网络请求和响应的捕获、监控和调试。此外,Fiddler5还支持对HTTPS流量的解密,极大地方便了开发者在安全加密通信环境下的问题诊断和性能优化工作。

weixin_42560991的博客 1245

fiddler抓包数据存储txt文件Accept-Encoding:zstd导致乱码解决方案

fiddler抓包数据存储txt文件Accept-Encoding:zstd导致乱码解决方案

大力水手z博客 2007

http调试助手

Http调试助手,能够进行GET、POST、DELETE、UPDATE等所有的HTTP操作。亲测好用,放心下载。

POST调试助手2.6.rar

用来调试网络请求发包数据,非常好用的一款工具

Fiddler获取ResponseBody乱码问题解决方法----oSession.GetResponseBodyAsString();

oSession.GetResponseBodyAsString();如果Fiddler无法识别编码方式默认使用utf-8编码方式会导致返回的内容乱码。 对于一些特殊的需求可以使用下面的语句 Encoding.GetEncoding("GB2312").GetString(oSession.responseBodyBytes)

易速营销中心-yso.me 5263

Http/Https Protocol Debuger HTTP协议调试器

1.支持HTTP和HTTPS(SSL加密)网络协议的跟踪和调试。 2.可以查看到HTTP/HTTPS协议连接的详细过程和返回结果。 3.允许GET/POST/HEAD/PUT四种连接方式。 4.支持HTTP的Proxy代理。 5.自动处理重定向Redirect功能。 6.自动处理Cookie的接收和发送。 7.可以自行设置和增加HTTP请求命令的参数。

怎样修改iis 服务器日期,怎么在IIS里设置服务器端缓存时间?

设置IIS缓存的方法1.测试,可以缓存整个Share工程(经测试IIS中的缓存测试对ASPX页面不起作用,估计与页面压缩的设置原理一样);2.需要设置缓存的工程: Share,Portal(根据IIS日志分析报告中的“Most Requested Directories”得出);3.设置的方法:第一步:打开 IIS 配置管理工具(Internet 信息服务(IIS)管理器)。选中一个目录(或者网站...

weixin_29290863的博客 576

GPT大模型在数学建模中的实战应用:从思路启发到代码生成

数学建模是将现实问题抽象为数学问题并求解的核心方法,其关键在于通过合理的假设与简化,构建可计算的数学模型。传统建模依赖MATLAB等工具进行推演试错,而大语言模型的出现革新了这一范式。GPT等模型通过理解自然语言、辅助逻辑推理与代码生成,能有效提升建模效率与质量,在问题解析、模型构建、算法实现等环节提供关键支持。本文聚焦GPT在数学建模中的具体应用,涵盖赛题解读、模型推导、代码生成与结果分析,并结合实战案例,探讨如何将其作为“副驾驶”融入建模全流程,实现人机协同的智能化建模。

weixin_29061465的博客 324

Intouch间接变量(扩展)

间接变量只是Intouch提供给开发者的便捷方式之一,并不是所有情况都一定要使用间接变量,有时候用条件语句或者内存变量的方式也能起到类似的作用。

weixin_41571357的博客 2168

HTTP的请求和响应详解

Expires、Cache-Control、Last-Modified、ETag是RFC 2616(HTTP/1.1)协议中和网页缓存相关的几个字段。前两个用来控制缓存的失效日期,后两个用来验证网页的有效性。要注意的是, HTTP/1.0有一个功能比较弱的缓存控制机制:Pragm

zjj1211的专栏 1万+

Android14 有线网络静态IP配置:从固件烧录到系统默认设置

本文详细解析了在Android14系统中,如何通过修改系统框架层和设置应用,为设备预设有线网络静态IP地址,实现固件烧录后即具备指定网络配置的功能。文章深入探讨了从扩展SettingsProvider数据库字段、配置默认值,到在设置应用中读取和应用配置的完整流程,旨在解决工业平板、智能终端等设备在无DHCP网络环境中批量部署的痛点,提升开箱即用体验。

lake5的博客 921

[改]HTTP调试工具:Fiddler 介绍二

学习如何通过Fiddler建立一个速度更快的网站。在这篇文章中,我们将使用Fiddler去探究HTTP的性能,缓存,以及压缩。如果你要是没有安装和配置过Fiddler, 请从文章的第一篇开始。 HTTP性能总览毫无疑问用户都喜欢访问速度快的网站。用户是非常的不耐烦,除非你的网站是没有竞争对手,换句话就是处于垄断地位的。如果你的访问者来自世界各地,那你就必须要保证你的网站在执行效

zymaxs的专栏 2381

方差迭代计算公式

方差迭代计算过程推导术语约定递推公式过程推导 术语约定 (1)En=1n∑i=1nxi E_n =\frac{1}{n} \sum_{i=1}^{n}x_i \tag{1} En​=n1​i=1∑n​xi​(1) (2)F(n)=∑i=1n(x2−En) F(n) = \sum_{i=1}^{n}{(x^2-E_n)} \tag{2} F(n)=i=1∑n​(x2−En​)(2) (3)V(n)...

weixin_44479136的博客 7921

第七章 Wi-Fi连接过程

系列文章目录 第一章 国内下载AOSP最新源码的方法 第二章 下载AOSP WiFi相关的代码 第三章 将源码导入Android Studio(无需编译idegen) 文章目录系列文章目录前言一、Wi-Fi连接是什么?二、Wi-Fi连接的过程1. 手动连接总结 前言 Wi-Fi连接分为下面几种过程,每种的流程都有些许差异: 手动连接 自动连接 在BSS之间漫游 Passpoint热点连接 一、Wi-Fi连接是什么? Wi-Fi连接是指STA(手机)连接到AP(无线路由器)的过程,这个过程分为链路

Frank.Zhang的专栏 2527

Fiddler

1. Introduction [url]http://www.fiddlertool.com/fiddler/help/video/default.asp[/url] 2. HTTP Debugging [url]http://msdn.microsoft.com/en-us/library/bb250446(VS.85).aspx[/url] 3. HTTP P...

乘风远航 112

GIS数据处理-使用PostGIS+QGIS

GIS数据处理1-使用PostGIS+QGIS 介绍 这里我遇到了一个需求,需要将SQLite的.db数据库中GIS数据导出成shapefile文件 数据库的表结构如下所示,这里存储的是wkt格式的矢量数据 WKT与WKB格式介绍 OpenGIS 规范定义了两种表示空间对象的标准方式:Well-Know Text (WKT) 形式和Well-Known Binary(WKB) 形式。WKT 和 WKB 都包含矢量几何要素的对象类型和构成对象的坐标的信息。WKT可读性强,更方便阅读识别,而在实际数据传输和存

孙霸天的专栏 2528

【HTTP】Fiddler(三)- Fiddler命令行和HTTP断点调试

断点调试和命令行

专注、专心 14万+

Unity引擎开发:复杂动作系统_动作捕捉数据的应用与整合

通过以上步骤,我们可以在Unity中有效地应用和整合动作捕捉数据,以实现更加真实和流畅的动画效果。从导入文件格式的选择,到预处理和优化,再到实时应用和调试验证,每一步都至关重要。希望本文能帮助你在Unity项目中更好地利用动作捕捉数据,提升动画质量和性能。

chenlz2007的博客 959

Xilinx DDR3 MIG IP核设计--汇总导航

快速上手Xilinx DDR3 IP核----汇总篇

孤独的单刀 2万+

HTTP调试工具:Fiddler的使用方法介绍

Fiddler可以帮您记录,调试Microsoft Internet Explorer与Web应用程序的交互,找到Web程序运行性能的瓶颈,还有如查看向Web服务器发送cookies的内容,下载内容的大小等功能。  说多一点是,Fiddler站在用户与Web服务器的中间,由它转发请求与响应,因此Fiddler作为一个可检视,可定制的工具,能让您了解交互过程细节,有利于解决Web程序的交互问题

我的JAVA快乐生活 3114

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

HTTP调试工具:Fiddler,httpwatch 介绍

    Fiddler工具介绍一 (原文地址:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebgen/html/IE_IntroFiddler.asp ) 介绍:你是不是曾经疑惑过你的web程序和IE是如何交互的?你是不是遇到过一些奇怪的而你又无法解决的性能瓶颈?你是不是对那些发送给服务器端的cookie 和那些你下载下来的被标记为可缓存的内容感到好奇?Fiddler官方网站及下载地址:http://www.f

1690

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Fiddler抓包工具之fiddler界面工具栏介绍

(1)WinConfig:windows 使用了一种叫做“AppContainer”的隔离技术,使得一些流量无法正常捕获,在 fiddler中点击 WinConfig 按钮可以解除这个诅咒,这个与菜单栏Tools→Win8 Loopback Exemptions 功能是一致的(2)气泡按钮,给session list中的会话添加备注。选中一条回话,再点击该气泡按钮可直接添加备注内容。添加成功后将会在Comments栏下查看到该备注。

m0_65111097的博客 2259

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: gridview的ButtonField
下一篇: window.setTimeout() 和window.setInterval() 使用说明
appoFeng
博客等级 码龄19年 20粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值