前端http缓存知识点整理

大家好。最近学习了关于前端缓存的内容,这篇文章是对于所学知识进行一个整理同时分享给大家,欢迎大家相互交流、讨论。

HTTP缓存

http缓存分为强制缓存和协商缓存。

强制缓存

这里主要介绍Cache-Control和Expires字段。

Cache-Control

Cache-Control的优先级比Expire的优先级高,在缓存时间结束后,Expires才会开始生效。

以下是Cache-Control的主要取值
Cache-Control的主要取值

Expires

Expires是给返回的请求结果缓存设置一个到期时间,
例如:==“Tue, 21 Sep 2021 06:37:07 GMT”==这种格式。

在到期时间之前,可以直接从缓存中请求资源,伴随的缺点就是如果设置的到期时间过长,可能无法及时同步服务器已经更新的数据。

协商缓存

协商缓存是在强制缓存失效后,浏览器携带标识符向服务器发送请求,服务器再根据标识符决定是否使用缓存。

协商缓存优先级 < 强制缓存;

协商缓存生效——>返回304,使用缓存;

协商缓存失效——>返回200,向服务器重新发起请求。

Last-Modified/If-Modified-Since

Last-Modified:返回的资源内容在服务器最后修改时间。

If-Modified-Since:当二次请求资源时,会在请求头设置If-Modified-Since(其值等于上一次服务器返回的Last-Modified)。服务器通过If-Modified-Since的字段值与资源最后被修改时间Last-Modified相对比:

如果时间对比结果相同,则无更新内容,返回304使用缓存;

如果不相同,时间大于最后修改时间,返回200并向服务器重新发起请求。

Etag/If-None-Match

Etag:是资源唯一哈希值

If-None-Match: 在二次请求资源时,将上一次服务器返回的Etag值放到request header中的If-None-Match,与Etag进行对比:

	如果对比结果一致,则无更新内容,返回304;
	如果对比结果不同,则返回200,重新向服务器发起请求。

分级缓存策略

当二次请求资源时,分级缓存策略是十分稳妥的,能保证在拉取最新资源内容的情况下,不重复向服务器请求。

过程如下:

	  强制缓存max-age/s-maxage是否过期?
			 	| 			|
			 	|			|否
			 	|是	        ↓
			 	|		 使用缓存
			 	↓
Etag/If-None-Match;Last-Modified/If-Modified-Since对比是否相等?
				|			|
				|			|是
				|否			↓
				|		 使用缓存
			    ↓
		向服务器重新发起请求

知识点整合图

在这里插入图片描述

感谢大家的阅读,喜欢这篇文章的可以点关注+收藏!~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值