接口测试开发之:一篇搞懂 Cache、Cookie及Session的爱恨情仇

2023-11-17

1、引言

这刚刚整理完公司内部技术分享的PPT,看看时间,又已经是凌晨…
喝一杯美咖,提提神,
反正都已经这个时间了,索性,就直接开始写博客吧。
因为最近总是被某些大佬艾特,说我这2月份更新的博文不地道了…
我也是哑巴吃黄连啊~~~

因为最近在给一些同学讲解接口的事情,
本以为 Cookie、Cache及Session这些知识,都是逢考必过的内容,然鹅,又是我想多了。

为了能让我可以多想点,今天就分享这三点姿势!!

2、Cache

关于缓存,我看了网上的一些教程讲解,几个字概括:

太繁琐,太啰嗦,长篇大论

为了能让大家更容易理解,小鱼我以文字+流程图的形式来分享。

首先,针对接口测试,Cache主要分为三类
浏览器缓存
代理缓存
网关缓存

2.1 缓存定义

2.1.1 缓存概念

概念

使用缓存Cache的站点会监听客户端向服务器端发出的请求,并根据相应的缓存设置保存服务器端反馈的数据,如HTML页面,图片等文件。

如果用户再次使用相同的URL发送请求,请求不会直接发向服务器,而是通过缓存策略现行判断是否能够使用之前已经保存下来的反馈文件,从而降低服务器的负载及提高数据的响应时间。

2.1.2 缓存优点

优点
一个优秀的缓存策略可以为网络传输带来以下两方面的好处:

  • 减少延迟:因为所发出的网页请求是指向更接近客户端的缓存,而不再是源服务器端,因为请求所花费时间更短,这让网站看上去反应更快,提高了用户体验。
  • 降低网络负荷:因为缓存文件可以重复使用,节省不少的带宽,降低了网络负荷。同时站在用户的角度,这也节省了不少流量.

妈妈再也不担心我的流量不够用了

2.2 浏览器缓存

2.2.1 存储路径

存储路径:
将浏览过得网页全部内容保存到本地计算机的硬盘中

2.2.2 缓存优点

优点:

  • 减少延迟:因为所发出的网页请求是指向更接近客户端的缓存,而不再是源服务器端,因为请求所花费时间更短,这让网站看上去反应更快,提高了用户体验。
  • 降低网络负荷:因为缓存文件可以重复使用,节省不少的带宽,降低了网络负荷。同时站在用户的角度,这也节省了不少流量.

妈妈再也不担心我的流量不够用了

2.2.3 缓存弊端

弊端
由于客户端内存的限制,不能存放过多的数据,否则会降低本机的性能。

2.2.4 原理图

原理流程图
在这里插入图片描述

2.3 代理缓存

2.3.1 原理

原理
代理缓存既不属于客户端,也不属于服务器端,而是利用网络路由器请求信息。

2.3.2 应用场景

应用场景

  • 用户手动设置浏览器代理
  • 使用网页代理

网页代理将请求的URL通过他潜在网络定向到代理,所以用户无需手动配置。

2.3.3 原理图

原理流程图
在这里插入图片描述

2.4 网关缓存

2.4.1 原理

原理
网关缓存也是中间人,但不是由系统网络管理员出于节省带宽而部署,他们通常是由于网站站长自己部署的,这样可以让自己的网站更具有扩展性,可靠性和性能更好。

可以通过许多方法将请求路由到网关高速缓存,他就类似于负载平衡器。

2.4.2 缓存分类

缓存分类

  • 强缓存:直接从本地缓存中取资源,不会和服务器通信
  • 协商缓存:通过服务器来告知是否能用本地缓存。先和服务器通信,在从本地缓存中去;如果不可以使用本地缓存,就会返回最新的资源。

2.4.3 缓存与协议流程图

强缓存与协商缓存图
在这里插入图片描述

2.4.4 缓存原理图

原理流程图
在这里插入图片描述

3、Cookie

3.1 原理

1、 用户会提供包括用户名称在内的订单信息并且将其提交到服务器;
2、服务器向客户端回传相应的数据的同时,也会发送这些信息;

3、当客户端接收到来自服务器的响应之后,浏览器会将Cookie存放在一个统一的位置;

4、客户端再向服务器发送请求的时候,会把Cookie再次发回至服务器。

3.2 通行证

通行证解析

Cookie的内容是保存的一小段文本信息,这些文本信息组成一份通行证。
它是客户端对于无状态协议的一种解决方案。

3.3 原理图

原理流程图

在这里插入图片描述

4、Session

4.1 传输步骤

1、 服务器端程序运行过程中创建Session,并为该Session生成唯一的Session ID

2、服务器将该Session ID 发送到客户端

3、当客户再次发送请求的时候,就会把这个Session ID都带上

4、当服务器接收到请求之后就会依据Session ID找相应的Session,完成请求响应

4.2 原理图

原理流程图在这里插入图片描述

5. Session 与Cookie区别

1.存储位置不同

Cookie:存放在客户端浏览器上;
Session:存放在服务器上。

2. 存储方式不同

Cookie:只能保管ASCII字符串,需要通过编码的方式存取Unicode字符或者二进制数据。运用Cookie难以实现存储略微复杂的信息。
Session:存取任何类型的数据。

3. 有效期不同

Cookie:设置其属性,长期有效
Session:关闭窗口,自动失效

4. 存储容量不同

Cookie:单个数据≤4KB,一个站点最多保存20个Cookie
Session:没有上限,但是出于对服务器的性能考虑,Session内不要存放过多的东西,并且设置Session删除机制。

5. 隐私策略不同

Cookie:对客户端是可见
Session:存储服务器,对用户透明

6. 服务器压力不同

Cookie:保存在客户端,所以不占用服务器资源
Session:保存在服务器端,所以会消耗大量内存

7.跨域支持不同

Cookie:支持跨域名访问。
Session:不支持跨域名访问。Session仅在它所在的域名内有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

接口测试开发之:一篇搞懂 Cache、Cookie及Session的爱恨情仇 的相关文章

  • 阿里云CDN缓存预热与刷新以及常见的故障汇总

    文章目录 1 为CDN缓存的文件增加过期时间 2 CDN缓存预热配置 3 CDN缓存刷新配置 4 常见故障 CDN缓存预热指的是主动将要缓存的文件推送到全国各地的CDN边缘加速器上 减少回源率 提供命中率 缓存刷新指的是后期上传了同名的文件
  • Redis主从集群

    Redis主从集群 1 集群结构 我们搭建的主从集群结构如图 共包含三个节点 一个主节点 两个从节点 这里我们会在同一台虚拟机中开启3个redis实例 模拟主从集群 信息如下 IP PORT 角色 192 168 150 101 7001
  • cookie、session、token的概念以及区别

    http链接都是无状态的 即是说浏览器无法判断这一次登陆和上一次登陆有没有关联 所以引入cookie和session的概念 让http可以判断你是否曾登陆过 cookie Cookie是客户端保存用户信息的一种机制 用来记录用户的一些信息
  • Redis缓存穿透、击穿和雪崩

    Redis是一种开源的高性能缓存数据库 常用于加速数据访问 提高系统性能 然而 在使用Redis时 我们需要注意一些常见的问题 例如缓存穿透 击穿和雪崩 这些问题可能会导致系统性能下降甚至崩溃 因此了解和解决这些问题是非常重要的 1 缓存穿
  • Java全栈面试题(三)--Redis

    对Redis的理解 Redis是一款开源的高性能键值对存储系统 支持多种数据类型 如字符串 哈希 列表 集合 有序集合等 主要用于缓存 消息队列 排行榜 计数器等场景 能够提供快速读写 高并发 持久化等功能 Redis是单线程的 通过采用多
  • 获取京东cookie简单暴力获取京东CK

    获取京东cookie简单暴力获取京东CK 具有时效性 太久没玩可能以失效 注意 用浏览器请使用隐身窗口 如果多个账号 一定不要点退出登录 直接关闭网页 清除浏览器cookie数据 隐身窗口无需这一步 重新进入网页登录下一个账号 退出会导致刚
  • SpringBoot通过@Cacheable实现redis缓存机制

    SpringBoot通过注解实现redis缓存机制 Cacheable 查询 CachePut 修改 CacheEvict 删除 下面展示一些 内联代码片 Cacheable 查询 An highlighted block key 这边以d
  • 接口并发性能测试开发之:从测试方案设计、测试策略、指标分析到代码编写,这一篇全搞定。

    并发接口性能设计思路与代码编写 1 引言 2 并发测试定义 3 并发测试分类 4 设计思路整理 5 测试方案设计 6 指标分析 7 代码实战 8 总结 1 引言 这篇是我3月份在公司内部做的技术分享内容 由于我在公司内部分享的内容较多 以及
  • 第十二章_Redis单线程 VS 多线程

    Redis为什么选择单线程 是什么 这种问法其实并不严谨 为啥这么说呢 Redis的版本很多3 x 4 x 6 x 版本不同架构也是不同的 不限定版本问是否单线程也不太严谨 1 版本3 x 最早版本 也就是大家口口相传的redis是单线程
  • 如何保持缓存和数据库中的数据一致

    背景 缓存是软件开发中一个非常有用的概念 数据库缓存更是在项目中必然会遇到的场景 而缓存一致性的保证 更是在面试中被反复问到 这里进行一下总结 针对不同的要求 选择恰到好处的一致性方案 缓存是什么 存储的速度是有区别的 缓存就是把低速存储的
  • Ceph bluestore中的缓存管理

    从15年3月接触Ceph分布式存储系统 至今已经5年了 因为工作的需要 对Ceph的主要模块进行了较深入的学习 也在Ceph代码层面做了些许改进 以满足业务需要 我们主要使用M版本 最近得闲 将过往的一些学习心得 改进以及优化思路记录下了
  • redis缓存雪崩、穿透、击穿

    这篇文章我们来了解一下一些redis的高并发问题以及他的解决方法 上图是一个简单的数据查询流程 前台请求 后台先从缓存中取数据 取到直接返回结果 取不到时从数据库中取 数据库取到更新缓存 并返回结果 数据库也没取到 那直接返回空结果 一 r
  • Redis 7.0 核心技术、实战应用、面试题

    Redis 7 0 核心技术与实战应用 Redis 入门概述 01 Redis 是什么 Redis REmote Dictionary Server 远程字典服务器 官网介绍 https redis io docs about 官网定义 R
  • 深聊测开领域之:虫剂悖论

    测试免疫 1 初识虫剂悖论 2 应对虫剂悖论 2 1 更新测试策略 2 2 更新测试用例 1 初识虫剂悖论 提到 虫剂悖论 pesticide paradox 我相信很多人都没听说的 除非是生物学专业的同学或者砖家 虫剂悖论描述的是重复使用
  • Redis——Redis简介

    Redis是目前最流行的键值对 key value 数据库 以出色的性能著称 官方提供的数据是可以支持100000以上的 QPS Redis具有高性能的主要原因如下 Redis是基于内存的存储数据库 绝大部分的命令处理只是纯粹的内存操作 内
  • Redis交互速度慢,频繁处理时经常报错 RedisSystemException: RedisException: Connection closed

    Redis交互速度很慢 达到几十到一百毫秒一次 且压力测试下经常报错 org springframework data redis RedisSystemException Redis exception nested exception
  • SpringBoot中项目启动及定时任务缓存数据库常用数据至内存变量并转换后高频调用

    场景 定时任务中需要获取数据库中数据进行数据转换成需要的格式并进行后续的业务处理 数据库中的数据更新频率不高 可将数据库中数据在项目启动后读取一遍数据 然后再通过定时任务定时查询数据库更新数据 实现数据库缓存的方式有多种 比如以下 Spri
  • 【Redis】Redis 配置文件

    1 概述 相同文件 Redis redis 配置 配置文件 redis conf 自定义目录 myredis redis conf 4 1 Units单位 配置大小单位 开头定义了一些基本的度量单位 只支持bytes 不支持bit 大小写不
  • Redis生产环境最佳实践

    欢迎关注公众号 通过文章导读关注 11来了 及时收到 AI 前沿项目工具及新技术 的推送 发送 资料 可领取 深入理解 Redis 系列文章结合电商场景讲解 Redis 使用场景 中间件系列笔记 和 编程高频电子书 文章导读地址 点击查看文
  • Redis生产环境最佳实践

    欢迎关注公众号 通过文章导读关注 11来了 及时收到 AI 前沿项目工具及新技术 的推送 发送 资料 可领取 深入理解 Redis 系列文章结合电商场景讲解 Redis 使用场景 中间件系列笔记 和 编程高频电子书 文章导读地址 点击查看文

随机推荐

  • 《视觉slam十四讲》之第7讲-特征提取与匹配

    特征 特征为图像中具有代表性的区域 可以为角点 边缘和区块等 特征是图像信息的另一种数字表达形式 特征具有以下性质 可重复性 Repeatability 相同的 区域 可以在不同的图像中被找到 可区别性 Distinctiveness 不同
  • Linux运行shell脚本时报错"syntax error near unexpected token `$'\r''

    Linux运行shell脚本时 常常会发生syntax error near unexpected token r 或者syntax error unexpected end of file等 诸如此类的报错信息出现的原因是因为在编写脚本内
  • Shell编程中脱字符(^)的用法

    cat configs signatures tmp 将configs signatures tmp文件内容作为grep命令的输入 grep v v是grep排除的参数 将configs signatures tmp除去空行的内容作为sor
  • 蓝桥杯在哪下载准考证

    点击自己的头像 gt 我的大赛 gt 会出现如下 gt 点击Java软件开发 根据自己报的方向 gt 可以看到考试信息 gt 下载准考证即可 转载于 https blog 51cto com 13534640 2090954
  • Kafka消息阻塞

    转自 http jis117 iteye com blog 2279519 hi all 大家都很关心kafka消息阻塞的情况 感谢RoctetMQ给我们的教训 Kafka上线也有一段时间了 确实有出现过消息阻塞的情况 虽然不影响业务而且用
  • 判断逻辑关系的运算符 && 与,

    package com test basic chapter2 功能 判断逻辑关系的运算符 与 或 非 与 同为真即真 或 有真即真 非 public class LogicalOperators public static void ma
  • Java中map集合,你真的了解吗?

    在Java编程中 map集合是一个非常重要的数据结构 它可以存储键值对 并且可以根据键快速查找对应的值 今天 我们就来详细介绍一下Java中的map集合 首先 让我们来了解一下map集合的基本概念 在Java中 map集合是一个接口 它有多
  • padding的四个参数_Google Flutter 布局(二)-Padding、Align、Center详解

    1 1 简介 Padding在Flutter中用的也挺多的 作为一个基础的控件 功能非常单一 给子节点设置padding属性 写过其他端的都了解这个属性 就是设置内边距属性 内边距的空白区域 也是widget的一部分 Flutter中并没有
  • 深入理解Java——从入门到精通

    标题 深入理解Java 从入门到精通 Java是一门广泛应用于软件开发领域的高级编程语言 它的特点包括强大的跨平台性 面向对象的编程范式 丰富的类库以及良好的安全性 无论是在企业级应用开发 移动应用开发还是嵌入式系统开发中 Java都扮演着
  • [分享]如何使用Angular中的自定义校验器

    在Angular的开发中表单是必不可少的 由此引出的表单校验也是万万不可缺少的 解决方法一 全部使用ngModel 双向绑定数据 在最后的submit点击时进行所有表单的校验 这样做固然没有什么问题 而且代码写的也和我们之前使用jQuery
  • 单元格法近似求解多边形最大内接矩形问题【思路讲解+java实现】

    文章目录 问题描述 问题解决方案 多边形网格化 区分每个单元格是在多边形内部还是外部 根据已标记单元格寻找最大内接矩形 剪枝优化 多角度旋转 案例测试 代码实现 说明 问题描述 给定一个多边形的点集 希望找出多边形内部面积最大的矩形 该问题
  • SPI机制是什么?

    一 SPI机制是什么 spi全称为 Service Provider Interface 是JDK内置的一种服务提供发现机制 SPI是一种动态替换发现的机制 一种解耦非常优秀的思想 spi的工作原理 就是ClassPath路径下的META
  • 已知三角形三边长怎么求面积_已知三角形三边求面积的公式——海伦公式

    海伦公式又译作希伦公式 海龙公式 希罗公式 海伦 秦九韶公式 传说是古代的叙拉古国王希伦 Heron 也称海龙 二世发现的公式 是一个利用三角形的三条边长直接求三角形面积的公式 下面我们利用初中的知识进行推导 注意 公式推导过程的方法比公式
  • BigDecimal:比double更精确的小数类

    BigDecimal概述 BigInteger是Number的子类 它用来对超过16位有效位的数进行精确的运算 双精度浮点型变量double可以处理16位有效数 在实际应用中 需要对更大或者更小的数进行运算和处理 float和double只
  • Wordpess百度自动推送代码

    直接将代码中的token换成百度站长中自己的即可 将下列代码放入functions php中就行了 WordPress 百度快速收录 API 提交代码 if function exists Baidu Submit function Bai
  • 操作系统实验进程调度模拟

    操作系统实验 实验一 实验1 基于优先数的时间片轮转调度算法调度处理模拟程序设计 一 实验目的 1 对进程调度的工作做进一步的理解 2 了解进程调度的任务 3 通过编程掌握基于优先数的时间片轮转调度算法具体实现过程 二 实验内容及实验要求
  • 遗传算法的实现

    请用遗传算法实现如下最大化问题 首先先来学习下 遗传算法的本质和过程 遗传算法是计算数学中用于解决最佳化的搜索算法 是进化算法的一种 进化算法最初是借鉴了进化生物学中的一些现象而发展起来的 这些现象包括遗传 突变 自然选择以及杂交等 遗传算
  • C#关键字 abstract,override,virtual的用法

    什么是抽象类 abstract关键字修饰的类称为抽象类 抽象类不能被实例化 抽象类是派生类的基类 关键字 abstract 语法 public abstract class 类名 1 一个抽象类可以同时包含抽象方法和非抽象方法 但不能实例化
  • IDEA工具快捷键---补全返回值

    Ctrl alt v 自动提示
  • 接口测试开发之:一篇搞懂 Cache、Cookie及Session的爱恨情仇

    Cashe Cookie与Session 1 引言 2 Cache 2 1 缓存定义 2 1 1 缓存概念 2 1 2 缓存优点 2 2 浏览器缓存 2 2 1 存储路径 2 2 2 缓存优点 2 2 3 缓存弊端 2 2 4 原理图 2