《Web性能实践日志》一第1章 WebPageTest内部原理1.1 函数拦截

简介:

本节书摘来自异步社区《Web性能实践日志》一书中的第1章,第1.1节,作者【加拿大】Stoyan Stefanov,更多章节内容可以访问云栖社区“异步社区”公众号查看

第1章 WebPageTest内部原理

Web性能实践日志
作者:Patrick Meenan

我想借着今年的这次机会向大家介绍一下WebPageTest是如何从浏览器获取性能数据的。虽然它与Windows下一些工具的技术原理大同小异,但本章介绍的内容并不能代表这些工具的工作原理。

首先,请看图1-1,这张图可以帮助我们从浏览器端理解Windows的网络堆栈。


c7d9cc6b25d7acfa10845e37131e3456b784b737

不管是什么浏览器,只要运行在Windows下,体系结构几乎就如图1-1描述的一样,所有的传输都是通过Windows Socket API完成的,即Windows下几乎所有应用程序都使用TCP/IP协议,如图1-1描述。

1.1 函数拦截

WebPageTest工作的关键是能够拦截任意函数调用和检查,甚至可以中途改变请求和响应(也可以选择完全不传输)。很幸运,有人已经做了绝大部分重要的工作,并且提供了一个非常优秀的开源库(http://newgre.net/ncodehook),有了这个库,你就不需要关注实现的细节了,但你还是可以了解一下工作原理。

  • 在内存中找到目标函数(如果从dll导出会比较零碎)。
  • 把函数的前几个字节复制下来(确保x86指令完好无损)。
  • 使用跳转指令(jmp)重写函数入口让它指向到一个新函数。
  • 提供一个替代函数,这个函数包含刚才从源函数复制下来的字节以及用于指向剩余代码的跳转指令(jmp)。

这是一件非常细致的事情,稍不留神就会出岔子,但是使用定义良好的函数(如全部的Windows API),你就可以轻松地拦截任何你想拦截的内容。

这么做有一个缺点,就是你只能把调用重定向到运行在同一个进程下的代码,如果这些代码是你自己写的,那就没什么问题,但如果你要监测那些不受自己控制的软件的话就不太好了,反而可能还会带来一些麻烦。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
存储 运维 应用服务中间件
[运维日志] Web 服务器日志依日期归档(Powershell 实现,附源代码)
[运维日志] Web 服务器日志依日期归档(Powershell 实现,附源代码)
74 0
|
2天前
|
开发框架 前端开发 数据库
Python从入门到精通:3.3.2 深入学习Python库和框架:Web开发框架的探索与实践
Python从入门到精通:3.3.2 深入学习Python库和框架:Web开发框架的探索与实践
|
10天前
|
缓存 负载均衡 数据库
优化后端性能:提升Web应用响应速度的关键策略
在当今数字化时代,Web应用的性能对于用户体验至关重要。本文探讨了如何通过优化后端架构和技术手段,提升Web应用的响应速度。从数据库优化、缓存机制到异步处理等多个方面进行了深入分析,并提出了一系列实用的优化策略,以帮助开发者更好地应对日益增长的用户访问量和复杂的业务需求。
15 1
|
1月前
|
机器学习/深度学习 前端开发 算法
利用机器学习优化Web前端性能的探索与实践
本文将介绍如何利用机器学习技术来优化Web前端性能,探讨机器学习在前端开发中的应用,以及通过实际案例展示机器学习算法对前端性能优化的效果。通过结合前端技术和机器学习,提升Web应用的用户体验和性能表现。
|
1月前
|
前端开发 JavaScript 安全
深入探索 Qt6 web模块 WebEngineCore:从基础原理到高级应用与技巧
深入探索 Qt6 web模块 WebEngineCore:从基础原理到高级应用与技巧
79 0
|
1月前
|
缓存 监控 应用服务中间件
如何使用负载均衡器提升Python Web应用的性能?
【2月更文挑战第27天】【2月更文挑战第94篇】如何使用负载均衡器提升Python Web应用的性能?
|
1月前
|
缓存 监控 前端开发
如何优化 Python WEB 应用程序的性能?
【2月更文挑战第27天】【2月更文挑战第93篇】如何优化 Python WEB 应用程序的性能?
|
1月前
|
监控 前端开发 JavaScript
构建高性能Web应用:前端性能优化的关键策略与实践
本文将深入探讨前端性能优化的关键策略与实践,从资源加载、渲染优化、代码压缩等多个方面提供实用的优化建议。通过对前端性能优化的深入剖析,帮助开发者全面提升Web应用的用户体验和性能表现。
|
1月前
|
弹性计算 算法 应用服务中间件
倚天使用|Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。
|
1月前
|
安全 中间件 Go
Go语言Web服务性能优化与安全实践
【2月更文挑战第21天】本文将深入探讨Go语言在Web服务性能优化与安全实践方面的应用。通过介绍性能优化策略、并发编程模型以及安全加固措施,帮助读者理解并提升Go语言Web服务的性能表现与安全防护能力。