Fiddler – 第二部分: HTTP性能

HTTP性能: 总览 所有的用户都喜欢在高速状态访问网站. 用户都是没有耐心的. 如果它的性能欠佳, 除非你的网站没有其他任何竞争对手, 否则用户是不愿意多停留在你的网站的. 如果你的网站是面向全球的访问者, 保证你的网站能有效率的运行就更加重要了, 因为要考虑到国际化网络常常会受到两个因素影响: 高延迟和低带宽. 有很多的方式可以提高你网站的性能:压缩技术,缓存,基于地理位置的负载平衡,增加硬件等到.优化压缩和缓存常常是最好用的方式,由于它们涉及的改变一般都是免费的,而且可以达到显著的效果. 在这篇文章,我们将使用Fiddler HTTP Debugger来研究HTTP性能,缓存和压缩技术.   调整”第一次访问”的性能 用户对你网站的第一次访问是非常重要的.访问者需要下载每一点的信息来生产网页,包括Jscript,CSS,图片和HTML.如果你的网页加载地太慢,访问者也许在它完成加载之前就离开了页面. 通过显示所有的 HTTP通讯,Fiddler可以轻松地显示用来生成一个页面所涉及的文件.在HTTP会话列表,Shift+点击多个记录可以计算”加载页面权重”-请求的数量和传输的字节.   图1. Fiddler’s数据视图   为了提供一个”哇,这个真的很快”第一印象,最好的方式就是递送更少和更小的文件. 高速的首次访问的技巧: 用更少的图像 提取式样到一个独立的CSS文件 提起脚本块到一个独立的JS文件 简化页面布局 使用HTTP压缩 只要你能提供一个高速的首次浏览体验,你就可以通过HTTP缓存为回头客来提供更快的性能.   HTTP缓存介绍 有两个提高你的网站速度的要素: 减少请求\响应回传的次数 减少服务器和客户端传输的字节数量 HTTP缓存是减少双程回传和字节传输的最好方式之一.缓存为客户端或者代理提供了一个机制,可以存储HTTP响应内容以方便后续需要,这样请求就不需要再次通过网络. 除了性能调优,最大化的利用HTTP缓存的优势还来自于网络带宽是收费的.为一个微软的主站调节缓存可以每个月节省$10,000的传出带宽开销.   缓存相关的请求头 为了提高性能,微软IE浏览器和其他的Web客户端会在本地维护从远处web服务器下载的缓存资源. 当客户端需要一个资源的时候,有三种可能的动作: 发送一个直白的HTTP请求向远成Web服务器请求一个资源 发送一个条件型的HTTP请求,当且仅当请求的资源和本地缓存的版本不一致时才到初始服务器获得该资源 当请求的资源存在一个本地缓存副本的时候,使用本地缓存版本的资源 当发送一个请求的时候,客户端也许需要用到下面的头:   表 1. 客户端缓存头 Pragma: no-cache 客户端不倾向于接受任何带有缓存的响应,必须每次都联系初始服务器获取一个全新的资源. If-Modified-Since: datetime…


Dynamics CRM:使用PowerShell开启SDK消息限流功能

Microsoft Dynamics CRM 2011提供PowerShell命令行方式开启命令行管理和部署功能。命令行向外暴露部署Web服务的一个子集用于开启获得和设置高级设置。PowerShell命令行完整支持的清单请参考MSDN。本文我们将会详细解释如何配置使用SDK消息子集。   场景 请考虑如下场景,一个有很多使用outlook的用户的组织,Outlook客户端能够使用线下和同步新数据的功能。管理员意识到由于很多用户同时同步数据,导致CRM实例的性能很差。一个可行的解决方案就是限流同时同步任务的数量。   配置 增加PowerShell 管理单元(Snapin) 命令行: Add-PSSnapin Microsoft.Crm.Powershell 开启限流 命令行: #从ConfigDB获取当前调节设置对象,并把它存储到一个变量 $eTmSettings =Get-CrmSetting -SettingType EtmSettings   #改变设置对象,开启调节功能 $eTmSettings.Enabled= 1 $eTmSettings.ThrottlingEnabled= 1   #更新设置对象 Set-CrmSetting-Setting $eTmSettings   获取限流设置 #从ConfigDB获取当前调节明细设置对象,并把它存储到一个变量 $settings =Get-CrmSetting -SettingType ThrottleSettings   执行如上命令行将会获得一个有如下属性的对象:     这里我们能够看到多个影响Outlook客户端同步行为的限流设置。在我们之前场景,我们希望限流所有Outlook客户端同步任务。因此,我们感兴趣的设置包括OutlookSyncMaxConnections和OutlookSyncPerOrgMaxConnectionsPerServer.   如下逻辑证明这两个属性之间如何互相影响: If((_organizationMax>=0&&organizationCount>=_organizationMax)||(_serverMax>=0&&_totalCount>=_serverMax)) //reject job request Else //execute jobrequest   设置限流设置 默认情况下,所有限流设置都被设置成-1,这表示没有限流。设置值为0或者更大将开始限流功能。使用0作为值时将会拒绝执行所有请求。在我们场景中我们将这个值设置为1作为测试值。下一步我们需要决定我们是否希望限流对每个组织或者每个服务器的请求。如果有3个组织,如果我们使用1作为测试值,则整个CRM服务器最大并发请求数量为3.如果我们希望,我们能够为每个服务器设置一个不同于每个组织设置的值。在这种情况下,如前逻辑将会…


Fiddler – 第一部分: HTTP调试

介绍 有没有一直好奇微软的Internet Explorer浏览器是如何与Web程序进行交互的?有没有遇到过奇怪的性能瓶颈难以找到原因?是不是好奇哪些cookies被传送,或者哪些下载内容是可以被标记为’可以缓冲’的? Fiddler可以解答这些问题.Fiddler是一个HTTP调试代理服务器. 它可以记录下电脑和Internet的所有HTTP通讯.Fiddler可以监控所有HTTP通讯,设置断点,并且操作收入\传出的数据.Fiddler比NetMon或者其他的网络调试工具都要简单,因为它只是暴露HTTP通讯内容. Fiddler包括了一个简单但是功能强大的基于Microsoft Jscript.NET脚本的子系统,它可以非常便捷的支持各种HTTP调试任务.Fiddler是用C#语言在Microsoft .Net框架上开发的工具.     开始 安装 – Fiddler要求Microsoft Windows 2000或者更高的系统版本,大约10M的硬盘空间 – 操作系统需要安装有.Net Framework1.1 – 下载Fiddler在http://www.fiddlertool.com – 成功安装后,你可以在IE的工具栏里看到Fiddler的图标- 如果IE的工具栏没有Fiddle图标,右击IE工具栏,点击定制化,选择Fiddler图标;也可以在开始菜单找到Fiddler 运行Fiddler 启动Fiddler之后,它会把自己注册成Microsoft Internet Service(WinInet)的系统代理 – WinInet是为IE, Microsoft Office和其他很多产品公用的HTTP层的服务.检查Fiddler是不是在成功的截取HTTP请求,可以通过:打开IE>工具>Internet选项>连接>Lan Settings>高级选项.下图代表成功. 图示1. Internet Explorer代理设置   作为系统代理,所有通过WinInet的HTTP请求都会通过Fiddler去连接它的目标Web服务器.反之亦然,所有HTTP响应也都会先通过Fiddler再到达客户端 图示2. HTTP通信流  当你关闭Fiddler,它会先注销自己作为系统代理的角色,然后关闭程序.     使用Fiddler 视图 Fiddler的使用界面包括了HTTP会话列表和多个选项卡.在这些选项卡中,可以浏览选中会话的的各种信息. 图示3. Fiddler的用户界面 窗口左边部分: HTTP会话列表 窗口右边Statics: 显示选中HTTP会话的数据 窗口右边Inspector: 该选项卡可以以不同的格式查看每个请求和响应的内容 窗口右边AutoResponder:…

1