【详细解读】HTTP协议性能特征及性能测试方法

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。
😊 座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍

通读本篇文章,您将获得以下内容

文章目录

    • 一 HTTP 传输过程中的数据压缩
    • 二 客户端的缓存
    • 三 常用Web性能测试工具
      • 3.1 PageSpeed分析工具
      • 3.2 WebPageTest
      • 3.3 Mac中查看Android设备浏览器性能
      • 3.4 iOS打开网页调试器

一 HTTP 传输过程中的数据压缩

HTTP 头信息中用相关字段 Accept-Encoding 来标识是否使用某种压缩格式,只有客户端在 HTTP 请求头里面指明可以支持指定的压缩时,服务端才返回压缩的内容,避免客户端无法解析的情况。数据压缩可以提升响应时间。(大部分网站都是开启的
在这里插入图片描述
需要注意的是,HTTP 传输中的压缩是一个双向的设置,一方面是客户端声明可以接受压缩后的内容,另一方面是服务器也要开启压缩相关的配置。

二 客户端的缓存

客户端缓存不仅可以提高响应时间还可以节省带宽。
用户访问网页时,针对一些静态内容,如图片、JS、CSS等,可能和上次访问的内容没有任何变化,如果每次都要反复从服务器拉取这些内容,则会浪费带宽,对于客户端的响应时间也有影响。因此客户端缓存油然产生。

接下来我们举个例子:假如访问 qq.com首页

第一次访问(在无缓存的情况下,所有的元素都需要从服务端拉取)
在这里插入图片描述

第二次访问:在不清除缓存的情况下访问。(直接刷新下网页即可)。(补充:快捷方式 Command+R:刷新当前页面;Command+Shift+R:强制刷新当前页面。)

我们会发现在Size栏目中,有很多标识 “memory cache”,表示本次访问这些资源都是直接从本地缓存文件读取的,而不是通过 HTTP 网络请求获取的。
在这里插入图片描述
我们点开一个JS文件
在这里插入图片描述
我们可以对比上面这两个图片,同样的 js 文件,一个返回 200,一个返回 304。304 响应码表示服务端接收到浏览器的请求,判断后认为服务端最新的该文件版本和客户端已有一致的,于是告诉客户端不需要再传输完整的内容了,可以直接用本地的版本。虽然客户端发起了请求,但是服务端只需要通过 304 简单应答,不必重新传输文件的内容,同时也起到了缓存的目的。

另外,在第二次访问的消息头中,我们看到
在这里插入图片描述

If-Modified-Since: Wed, 27 Jan 2021 09:11:32 GMT,这个时间戳是第一次访问 custom_ed041a23.js 时响应头中的 Last-Modified 字段的内容。就是说第一次收到响应时,将对应的信息存储起来,等到下次再请求这个同样的URL时,客户端发现缓存因为过期不能直接使用了(但是不会立即删除缓存文件),而会把时间戳回传给服务器,告诉服务器说本地有这个版本的文件。这样服务端收到这个信息后可以对比给出合适的响应。

在Mac中可以查看Chrome的缓存文件,目录如下:/Users/xiaozeng/Library/Caches/Google/Chrome/Default/

在这里插入图片描述

三 常用Web性能测试工具

3.1 PageSpeed分析工具

进入首页后https://pagespeed.web.dev/,输入要访问的地址即可开始测试分析。

在这里插入图片描述

3.2 WebPageTest

这是一个在线工具(https://www.webpagetest.org/),可以统计访问每个网址的时间。登陆工具后,输入待测网址即可开启测试。等待一会后就可以看到结果。

在这里插入图片描述

单个请求的详细时间,包括DNS查询时间、链接建立时间等。

在这里插入图片描述

3.3 Mac中查看Android设备浏览器性能

首先需要在Chrome浏览器里安装一个扩展程序:ADB,大概就长下图这个样子

在这里插入图片描述
安装完成后将小图标点亮。
在这里插入图片描述
通过 USB 线连接手机和电脑,在手机上打开 Chrome 浏览器,(必须是 Chrome 才可以识别),在 Mac Chrome 浏览器中输入 chrome://inspect/#devices,然后点击 inspect,就可以打开 Chrome 的开发者工具,此时,手机上的操作都会反映到这个开发者工具上面。就可以直接在 Mac Chrome 浏览器中查看某个请求到网络耗时分析。
在这里插入图片描述
在这里插入图片描述

3.4 iOS打开网页调试器

如果在Mac中调试Safari浏览器,首先需要在iOS设备上开启“网页检查器”。(设置——Safari浏览器——高级)
在这里插入图片描述
通过数据线连接手机和电脑,打开 Mac 中 Safari 浏览器,在工具栏选择对应设备
在这里插入图片描述
即可出现当前手机Safari浏览器上的信息
在这里插入图片描述

如果只是简单地使用工具,其实门槛是非常低的,更重要的是数据的解读和分析,而这方面依赖于对具体技术细节的理解,以及对被测产品的架构和部署等方面的深入了解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/468189.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小程序云开发(十六):JavaScript基础

🔗 运行环境:小程序云开发 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 🔐#### 防伪水印——左手の明天 ####🔐 &#x1f497…

Auto-DataProcessing:一组让制作数据集变轻松的脚本

前言 最近跟同学参加了个比赛,我负责Object-Detection的技术实现,需要从网上扒大量的数据(主办方每种识别物就给了一张demo🤣),发现数据准备是一个真的是一个非常重要但又耗时耗力的过程。对我来说,给我一类待识别的标…

蓝桥杯-Sticks-DFS搜索

题目 样例输出是 6 5 题目中给错了,不知道什么时候会改。 思路 --剪枝,否则时间复杂度和空间复杂度过大,会超时。 --注意有多组测试样例时,需要将bool数组重新赋值为false。 --函数类型不是void,return语句不能省…

Selenium 自动化 —— Selenium IDE录制、回放、导出Java源码

Hello Selenium 示例 之前我们在专栏的第一篇文章中演示了使用使用Selenium进行百度搜索的Hello world示例。 代码不复杂非常简单: public static void main(String[] args) {WebDriver driver null;try {// 设置Chrome驱动的路径 // System.setPro…

UnityShader(十八) 透明度测试

上代码: Shader "Shader入门/透明度效果/AlphaTestShader" {Properties{_MainTex ("Texture", 2D) "white" {}_CutOff("CutOff",Range(0,1))1}SubShader{Tags { "Queue""AlphaTest" "IgnorePro…

SpringBoot中使用MybatisX插件的详细过程

MybatisX 是一款针对 MyBatis 框架的 IntelliJ IDEA 的快速开发插件,旨在提高 MyBatis 开发效率的工具。它提供了一系列功能来简化 MyBatis 的配置和使用,包括 XML 文件的智能补全、快速跳转、代码生成等功能。 实现细节 (1)在I…

Milvus向量数据库检索

官方文档:https://milvus.io/docs/search.md   本节介绍如何使用 Milvus 搜索实体。   Milvus 中的向量相似度搜索会计算查询向量与具有指定相似度度量的集合中的向量之间的距离,并返回最相似的结果。您可以通过指定过滤标量字段或主键字段的布尔表达…

最细致最简单的 Arm 架构搭建 Harbor

更好的阅读体验:点这里 ( www.doubibiji.com ) ARM离线版本安装 官方提供了一个 arm 版本,但是好久都没更新了,地址:https://github.com/goharbor/harbor-arm 。 也不知道为什么不更新,我看…

MySQL—基本操作

1.创建数据库 ①CREATE DATABASE schooldb; --不进行检查和设置默认字符集 ②CREATE DATABASE IF NOT EXISTS schooldb CHARSET utf8; --进行检查和设置默认字符集 CREATE DATABASE 创建数据库 IF NOT EXISTS 意为当前数据库不存在 CHARSET 意为设置数据库字符集…

Windows server 2008 R2 在VMware虚拟机上的安装

Windows server 2008 R2 在VMware虚拟机上的安装 准备工作VMware 新建并配置虚拟机安装和启动Windows server 2008 R2 准备工作 Windows server 2008 R2 ISO镜像的下载:Windows server 2008 R2 ISO VMware 新建并配置虚拟机 第一步,点击新建虚拟机 第…

语音控制模块_雷龙发展

一 硬件原理 1,串口 uart串口控制模式,即异步传送收发器,通过其完成语音控制。 发送uart将来自cpu等控制设备的并行数据转换为串行形式,并将其串行发送到接收uart,接收uart然后将串行数据转换为接收数据接收设备的并行…

【地图】腾讯地图 - InfoWindow 自定义信息窗口内容时,内容 html 嵌套混乱问题

目录 需求描述问题问题代码页面展示 解决原因解决办法解决代码页面展示 代码汇总注 需求描述 腾讯地图上画点位,点击点位展示弹框信息 问题 问题代码 // 打开弹框 openInfoWindow(position, content) {this.infoWindow new TMap.InfoWindow({map: this.map,posit…

Elasticsearch:全文搜索的利器

1. 简介 Elasticsearch是一个基于Lucene的分布式搜索引擎,能够支持准实时的数据检索NRT(near real-time),支持海量数据的处理,包括结构化和非结构化数据,提供强大的全文搜索能力,但是ES不仅仅是一个全文搜索引擎,他能…

如何利用IP地址分析风险和保障网络安全

随着网络攻击的不断增加和演变,保障网络安全已经成为了企业和组织不可忽视的重要任务。在这样的背景下,利用IP地址分析风险和建立IP风险画像标签成为了一种有效的手段。本文将深入探讨IP风险画像标签的作用以及如何利用它来保障网络安全。 IP风险画像查…

[LLM]大语言模型文本生成—解码策略(Top-k Top-p Temperature)

{"top_k": 5,"temperature": 0.8,"num_beams": 1,"top_p": 0.75,"repetition_penalty": 1.5,"max_tokens": 30000,"message": [{"content": "你好","role": "user&…

OpenCV实现OCR图片文本检测

一、操作步骤 把左边这样的图片,通过仿射变换转换成右边那样的图片。 然后再通过pytesseract读取图片内容得到图片中的文本就好了。 需要使用到: 仿射变换ocr识别 注:本文使用现成图片,轮廓检测较为明显,若是自己拍…

CTF题型 SSTI(1) Flask-SSTI-labs 通关 题记

CTF题型 SSTI(1) Flask-SSTI-labs 通关 题记 文章目录 CTF题型 SSTI(1) Flask-SSTI-labs 通关 题记前记获取键值或下标的方式获取属性的方式 Level 1 no wafLevel 2 bl[\{\{]Level 3 no waf and blindLevel 4 bl[[, ]]获取键值或下标 Level 5 bl[\, "]Level 6 bl[_]Level …

搭建 es 集群

一、VMware准备机器 首先准备三台机器 这里我直接使用 VMware 构建三个虚拟机 都是基于 CentOS7 然后创建新用户 部署 es 需要单独创建一个用户,我这里在构建虚拟机的时候直接创建好了 然后将安装包上传 可以使用 rz 命令上传,也可以使用工具上传 工…

Linux网络命令介绍30+

目录 一、网络命令 1. ifconfig 2. ip 3. traceroute 4. ping 5. route 6. netstat 7. ss 8. dig 9. arp 10. iwconfig 11. nslookup 12. host 13. whois 14. tracepath 15. curl 16. hostname 17. wget 18. mtr 19. iftop 20. iotop 21. tcpdump 22. i…

jenkins Pipeline接入mysql

背景: jenkin pipeline进化过程如下: Jenkins Pipeline 脚本优化实践:从繁琐到简洁 >>>>> Jenkins Pipeline脚本优化:为Kubernetes应用部署增加状态检测>>>>>> 使用Jenkins和单个模板部署多个K…