HTTP(web缓存与历史迭代)

1介绍:

在现代互联网中,Web 缓存(Web Cache)是一项非常重要的技术,是部署在网络中的"数字中转站",通过预先存储热门网络资源,不仅可以提升用户的访问速度,还能减轻服务器的负担,提高整个网络的效率。

Web缓存也被称为代理服务器/缓存服务器/缓存代理,是一种能够代替原始服务器响应用户请求的网络实体。

Web 缓存服务器拥有自己的存储空间(如硬盘或高速缓存),它可以保存用户最近访问过的网页、图片、视频等资源。当用户再次请求相同的资源时,缓存服务器可以直接返回已保存的副本,而无需每次都向原始服务器发起请求。

这种机制类似于图书馆中的"热门图书借阅区"------如果一本书被很多人借阅,管理员就会多准备几本放在借阅区,方便读者快速获取,而不需要每次都去主书库查找。

2web缓存器的工作流程

Web 缓存的工作流程 假设用户正在访问一个图片资源:

请求地址: http://www.example.com/images/logo.png 以下是 Web 缓存的完整工作流程

1.用户浏览器发起请求 用户在浏览器中输入网址,浏览器会根据配置,将请求发送到Web 缓存服务器,而不是直接连接原始服务器。

2.缓存服务器检查本地是否有副本 Web 缓存服务器会先检查自己的存储空间中是否已经保存了这个资源的副本。如果有的话,它会直接将副本返回给用户,跳过与原始服务器的通信,节省时间和带宽。 ✅ 举例:假设用户之前访问过这个图片,缓存服务器中已经有了它的副本,那么这次请求就会直接从缓存中获取。

3.缓存服务器请求原始服务器 如果缓存中没有该资源,缓存服务器就会主动连接原始服务器(在这个例子中是www.example.com 的服务器),并向它发送一个 HTTP 请求,获取这个资源。

4.原始服务器返回资源 原始服务器收到请求后,会像往常一样生成一个 HTTP 响应,并将请求的资源返回给缓存服务器。

5.缓存服务器保存并转发资源 缓存服务器在收到资源后,会在自己的存储空间中保存一份副本,然后将这份副本通过已有的连接返回给用户的浏览器。

3.web优势

Web 缓存的优势:

1.加快访问速度

2.减少带宽消耗

3.减轻服务器压力

4.提升用户体验

为了使用 Web 缓存,通常需要在用户设备或网络中进行配置:

浏览器设置:可以手动设置代理服务器地址,让所有请求先经过缓存;

企业网络:很多公司会在局域网中部署缓存服务器,员工访问外部网站时,由缓存统一处理请求; CDN 服务:网站可以通过接入 CDN(如阿里云 CDN、腾讯云 CDN)将内容分发到全国各地的缓存节点,实现自动缓存和加速。

4.对于web缓存器的总结

在现代网络架构中,Web 缓存器扮演着一个特殊而重要的角色。它既不是纯粹的服务器,也不是普通的客户端,而是兼具两者功能的中间设备。这种双重身份使其在提升网络性能、优化资源分发方面发挥了关键作用。

我们可以用一个简单的比喻来理解 Web 缓存器的角色转换:

当它接收浏览器请求并返回响应时,它就像一个服务器,为用户提供网页、图片、视频等资源;

当它向原始服务器(如某个网站的主服务器)发起请求并获取资源时,它又像一个客户端,模仿用户行为去获取数据。

这种灵活的身份切换,使得 Web 缓存器能够在不改变用户使用方式的前提下,显著提升网络效率。

5.web缓存器的部署方式

高校校园网

例如,一所大学可以在校园网内部署一台 Web 缓存服务器,并将所有学生和教师的浏览器配置为默认访问这台缓存服务器。这样,当多名用户访问相同的网页或教学资源时,只需从缓存中获取一次,就能满足多人需求,节省带宽资源。

住宅 ISP 网络

比如中国电信、中国移动等运营商,可以在其网络中部署多个 Web 缓存节点,为家庭用户提供更快的网页加载速度。这些缓存服务器通常会预先配置在用户的网络设置中,无需用户手动干预。

企业网络

大型企业为了提升员工访问互联网资源的效率,也常常在企业内部署 Web 缓存服务器,特别是在分支机构与总部之间带宽有限的情况下,缓存能显著减少跨区域数据传输的负担。

为了更清楚地说明 Web 缓存器在网络性能优化中的作用,我们来看一个具体的网络场景,深入理解 Web 缓存的价值。这个场景模拟了一个机构网络(例如大学或企业)与互联网之间的连接情况,并通过数据计算展示缓存器如何显著提升访问速度、降低网络压力。

6.引用一个实例感受web缓存器的作用

我们假设一个典型的网络结构,其中包括:

机构内部网络:一个高速的局域网,连接着多个用户设备; 接入链路:从机构内部路由器到互联网路由器之间的一条带宽为 15 Mbps 的链路;

补充:互联网上的 Web 服务器:这些服务器分布在全球各地,比如阿里巴巴、百度、腾讯等网站的服务器。

我们设定以下访问参数: 平均每个请求的资源大小为 1 Mb(如一张图片、一个网页);机构内部的用户平均每秒发出 15 个 HTTP 请求;HTTP 请求报文非常小,可以忽略其对带宽的影响;从因特网路由器发送请求到接收到服务器响应的平均时延为 2 秒,我们称这个时延为"互联网时延"。

用户请求一个网页或资源时,从发出请求到完全加载资源所需的时间(即总响应时间)主要包括以下三个部分:

  1. 局域网时延:用户设备到机构路由器之间的网络传输时间;

  2. 接入链路时延:机构路由器与互联网路由器之间的传输时间;

  3. 互联网时延:从互联网路由器到目标服务器的往返时间 我们先来计算接入链路和局域网上的流量强度(即链路的使用率),从而判断是否会出现拥塞。

由于每秒15个HTTP请求,每个图片资源1kb,所以瞬时吞吐量15kb,在机构网络中会很正常,但是到接入链路中就会出现问题了,由于接入链路是刚好等于吞吐量,这个时候p=1也就是说丢包率将会急速上升,想要给接入链路改良换代显然成本很高,所以这个时候选择引入一个web缓存器在机构网络中将很有性价比

7.web缓存器的优化(条件GET方法)

8.举一个实例

9.HTTP的演进

HTTP 协议经过多次迭代,主要版本包括:

HTTP/1.0(RFC 1945)

特点:每个请求-响应需建立独立 TCP 连接,导致"连接开销大"。

问题:加载网页时需多次握手,降低性能。

HTTP/1.1(RFC 7230)

改进:引入持久连接(Keep-Alive),允许复用 TCP 连接,减少握手次数

优化:支持管道化请求(Pipeline),允许在单个连接中发送多个请求。 现状:截至 2020 年,仍是主流版本。

HTTP/2(RFC 7540) 核心改进:

多路复用(Multiplexing):在单个 TCP 连接中同时传输多个请求和响应,避免"队头阻塞"(宏观并行,微观串行)

头部压缩:减少重复的 HTTP 头部信息;

服务器推送:服务器主动向客户端发送资源(如预加载 CSS)(提前把必须要传递的数据发给客户端)。 优势:显著提升页面加载速度,尤其适用于复杂网页

10.HTTP对现代web的演进帮助,与模块化

HTTP的可靠运行得益于TCP/IP协议栈的分层设计:

HTTP专注处理应用层逻辑(请求/响应格式) ,TCP负责数据可靠传输(丢包重传、顺序控制)

IP协议处理网络寻址和路由。

通过这种模块化设计,各层可以独立演进。当HTTP升级到新版本时,不需要修改底层的TCP/IP实现,保证了协议体系的稳定性和扩展性。

HTTP 通过定义客户端与服务器的交互规则,构建了 Web 的基础通信框架。其无状态特性简化了设计,但通过 Cookie、Session 等技术弥补了状态管理的不足。 随着 HTTP/2 的普及,多路复用和头部压缩等技术进一步提升了性能,为现代 Web 应用(如流媒体、实时交互)提供了更强支撑。未来,HTTP/3(基于 QUIC 协议)将进一步优化移动端和高延迟网络环境下的性能表现。

11.HTTP/1.1的不足

1.队首阻塞(HOL Blocking) 假设一个网页包含以下内容:一个 HTML 页面;一段较大的视频;多个小型资源(如图标、CSS 文件、JavaScript 文件)。 在 HTTP/1.1 中,如果浏览器使用单一 TCP 连接加载这些资源,那么: 视频文件由于体积较大,会占用较长时间传输; 小型资源虽然体积小、加载快,但它们必须排在视频之后才能传输; 结果是:虽然这些小资源加载速度快,但由于队列顺序的问题,它们的加载被延迟了。 这种现象就被称为**"队首阻塞",**它会显著增加用户感知的页面加载时间。 为缓解这个问题,HTTP/1.1 浏览器通常会打开多个 TCP 连接,并行下载不同资源。然而,这种方法也带来了额外的开销,比如连接建立的延迟、服务器资源的消耗等。

2.协议头膨胀:HTTP/1.1每次请求需携带完整首部(平均870字节),加载20个资源需传输17.4KB无用数据,相当于:每次网购都要附赠一本《新华字典》大小的协议头。

3.连接数限制:浏览器为规避队首阻塞,需同时建立6-8个TCP连接,如同同时打开8个收银台处理同一单购物。

12.HTTP/1.2的优点

HTTP/2 的设计目标 HTTP/2 的主要目标是减少用户感知的延迟,提高网页加载效率。它在不改变 HTTP 基本语义(如 方法、状态码、URL 和首部字段)的前提下,优化了数据的传输方式和格式化方法,主要包括以下核心 技术:

1.多路复用:HTTP/2 引入了多路复用技术,从根本上解决了队首阻塞的问题。 在 HTTP/2 中,一个 TCP 连接可以承载多个请求和响应;每个请求和响应被拆分为多个数据流(Stream); 这些数据流可以在同一个连接中并行传输,互不干扰。

2.请求优先级:浏览器可以为不同资源设置优先级。例如,HTML 文件和关键 CSS 可以优先加载,而图片、视频等可以稍后加载。

3.服务器推送:服务器可以在浏览器尚未请求某些资源时,主动将资源推送给浏览器。例如,当用户请求 HTML 页 面时,服务器可以提前推送相关的 CSS 和 JavaScript 文件,进一步提升加载速度。

4.首部压缩:HTTP 请求和响应中包含大量重复的首部信息(如 User-Agent 、 Accept 等)。HTTP/2 使用 HPACK 算法对首部进行压缩,减少传输数据量,尤其适合移动网络等带宽有限的环境。平均压缩比达3:1。

13.TCP拥塞控制技术/HTTP1.2

14.三个机制解决拥塞技术的延迟问题

15.成帧技术

相关推荐
YOU OU7 小时前
Redis基础常识与命令
数据库·redis·缓存
吳所畏惧12 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
Y38153266217 小时前
SERP API + Redis 缓存层:4 种方案对比与选型
数据库·redis·缓存
海兰19 小时前
【高速缓存】RedisVL 高级查询(全文搜索、混合搜索和 多向量搜索)
数据库·人工智能·redis·缓存
流星白龙1 天前
【Redis】4.基本全局命令
数据库·redis·缓存
流星白龙1 天前
【Redis】3.Redis安装与命令行客户端
数据库·redis·缓存
我不想名字重复2 天前
redis缓存和数据库数据保持一致
数据库·redis·缓存
时空无限2 天前
vllm 大模型启动缓存相关环境变量 export
linux·缓存·vllm
流星白龙2 天前
【Redis】6.计数其他命令
数据库·redis·缓存
正儿八经的少年2 天前
redis 的大 key 和热 key 详解
数据库·redis·缓存