web缓存200和304区别

本文介绍了前端缓存的两种主要类型——HTTP缓存和浏览器缓存,重点讲解了HTTP缓存的工作流程,包括强缓存和协商缓存。HTTP缓存的关键在于HTTP响应头的Cache-Control、Expires、Last-Modified和Etag等字段,以及它们如何影响200和304状态码的返回。通过理解这些概念,开发者可以更好地优化Web应用的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

web缓存

  1. 前端缓存主要分为HTTP缓存和浏览器缓存。HTTP缓存是在HTTP请求传输时用到的缓存,主要是在服务器代码上设置,浏览器缓存是在前端js上设置;

 

  1. HTTP缓存

整体流程:HTTP缓存都是从第二次请求开始的。

第一次请求资源时,服务器返回资源,并在respone header头中回传资源的缓存参数;第二次请求时,浏览器判断这些请求参数,击中强缓存就直接200,否则就把请求参数加到request header头中传给服务器,看是否击中协商缓存,击中则返回304,否则服务器会返回新的资源。

F5刷新可以刷新last modify,不是ctrl + F5

 

form memory cache

不请求网络资源,资源在内存当中,一般脚本、字体、图片会存在内存当中

form disk ceche

不请求网络资源,在磁盘当中,一般非脚本会存在内存当中,如css等

 

 

 

  1. 缓存字段:

1.Cache-Control

请求/响应头,缓存控制字段,可以说是控制http缓存的最高指令,缓存与否判断;

它有以下常用值

1.1 no-store:所有内容都不缓存

1.2 no-cache:缓存,但是浏览器使用缓存前,都会请求服务器判断缓存资源是否是最新,它是个比较高贵的存在,因为它只用不过期的缓存。

1.3  max-age=x(单位秒) 请求缓存后的X秒不再发起请求,属于http1.1属性,与下方Expires(http1.0属性)类似,但优先级要比Expires高。

1.4 s-maxage=x(单位秒) 代理服务器请求源站缓存后的X秒不再发起请求,只对CDN缓存有效(这个在后面会细说)

1.5 public 客户端和代理服务器(CDN)都可缓存

1.6 private 只有客户端可以缓存

2.Expires

响应头,代表资源过期时间,由服务器返回提供,GMT格式日期,是http1.0的属性,在与max-age(http1.1)共存的情况下,优先级要低。

3.Last-Modified

响应头,资源最新修改时间,由服务器告诉浏览器。

4.if-Modified-Since

请求头,资源最新修改时间,由浏览器告诉服务器(其实就是上次服务器给的Last-Modified,请求又还给服务器对比),和Last-Modified是一对,它两会进行对比。

5.Etag

响应头,资源标识,由服务器告诉浏览器。

6.if-None-Match

请求头,缓存资源标识,由浏览器告诉服务器(其实就是上次服务器给的Etag),和Etag是一对,它两会进行对比。

localStorage

将数据保存在客户端本地的硬件设备(通常指硬盘,也可以是其他硬件设备)中,即使浏览器被关闭了,该数据仍然存在,下次打开浏览器访问网站时仍然可以继续使用。

这两者的区别在于,sessionStorage为临时保存,而localStorage为永久保存。

 

sessionStorage

将数据保存在session对象中。所谓session,是指用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。session对象可以用来保存在这段时间内所要求保存的任何数据。

cookie

cookie: 少量信息,只能保存字符串类型,以文本的方式;<4kb

 

 

session

session通过类似与Hashtable的数据结构来保存,能支持任何类型的对象(session中可含有多个对象)   大小无限制

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值