http状态码301、302及304

http状态码分类:
1**:服务器收到请求,需要请求者继续执行操作
2**:成功,操作被成功接收并处理
3**:重定向,需要进一步的操作以完成请求
4**:客户端错误,请求包含语法错误或无法完成请求
5**:服务器错误,服务器在处理请求的过程中发生了错误

状态码301:永久性转移
状态码302:临时性转移
301和302都代表重定向,浏览器拿到这个状态码后会自动跳转到新的url地址
抓取一个302临时重定向,新的url地址可以从响应标头的Location字段获取,在地址栏可以看到输入的A地址变为B地址。
不同点为301表示旧地址A的资源已经被永久移除了,302表示旧地址A的资源还存在。
在这里插入图片描述

状态码304:当浏览器请求未改变且已缓存的资源时,服务器会返回304状态码;告知浏览器,该资源从某个时间段之后没有改变,可以用在浏览器端缓存的资源
强缓存与协商缓存
1、强制缓存:
服务器通知浏览器一个缓存时间,在缓存时间内,下次请求直接使用缓存中的资源

Expires(http1.0的产物)

1、是一个绝对时间,是缓存过期时间
2、用以表达在这个时间点之前发起请求可以直接从浏览器中读取数据,而无需重新发起请求
3、用户可能将本读时间进行修改,从而导致浏览器判断缓存失效,重新请求资源

Cache-Control(http1.1的产物)

1、以时间间隔标识失效时间,解决了Expires服务器和客户端相对时间的问题
2、比Expires多了很多选项设置,如max-age、public等

Disk Cache 存储在硬盘中的缓存
Memory Cache 内存中的缓存
在这里插入图片描述
设置请求缓存:

<meta http-equiv="Cache-Control" content="max-age=7200" />
<meta http-equiv="Expires" content="Mon, 20 Jul 2013 23:00:00 GMT" />

2、协商缓存:
协商缓存每次读取数据都要和服务器通信,相关头信息为:Last-Modified/If-Modified-Since、ETag/If-None-Match,这两组头信息成对出现,前面为响应标头,后面为请求标头,通信后由服务器校验,返回304状态码时,浏览器直接使用缓存
Last-Modified/If-Modified-Since是http1.0的产物,表示服务器资源最后一次修改的时间(GMT格式)
ETag/If-None-Match是http1.1的产物,是服务器资源的唯一标识,服务器资源有变化则重新生成该标识

Last-Modified/If-Modified-Since

1、服务器通过Last-Modified告知浏览器资源最后一次修改时间,如下图,响应标头里有Last-Modified字段,浏览器将这个字段及其内容存入缓存数据库种
2、下一次请求该资源时,如刷新页面操作,浏览器会找出这个值写入请求头If-Modified-Since字段中
3、服务器收到这个值If-Modified-Since后与Last-Modified对比,如果相等,表示未修改,则响应304状态码,反之则表示修改了,响应200状态码并返回数据
该方式存在一定缺陷:如果是周期性重写,实际内容没有改变也会被记录改变

ETag/If-None-Match

1、服务器返回ETag,作为资源是否有变化的标识
2、浏览器在下一次发起请求时,会将上一次的ETag值赋给If-None-Match并放在请求标头中,服务器用这个值和上一次的值匹配,如果一致则返回304,浏览器相应读取本地缓存,否则返回200及新的资源
在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
HTTP状态码服务器返回给客户端的三位数字代码,用于表示服务器对请求的处理结果。状态码由五个类别,分别以不同的数字开头,分别是1xx(信息性状态码)、2xx(成功状态码)、3xx(重定向状态码)、4xx(客户端错误状态码)和5xx(服务器错误状态码)。以下是常见的HTTP状态码及其含义: 1. 1xx(信息性状态码):表示服务器已接收到请求,正在处理,并将继续发送信息给客户端。 - 100(Continue):客户端可以继续发送请求。 - 101(Switching Protocols):服务器已经理解客户端的请求,并将切换到另一个协议来完成这个请求。 2. 2xx(成功状态码):表示服务器已成功处理请求并返回响应。 - 200(OK):表示请求已成功处理。 - 201(Created):表示请求已经被成功处理,并创建了一个新的资源。 - 204(No Content):表示请求已经被成功处理,但没有任何内容需要返回。 3. 3xx(重定向状态码):表示客户端需要进行附加操作才能完成请求。 - 301(Moved Permanently):请求的资源已永久移动到新的位置。 - 302(Found):请求的资源已临时移动到新的位置。 - 304(Not Modified):客户端可以通过本地缓存直接使用先前访问的结果。 4. 4xx(客户端错误状态码):表示客户端发送的请求有错误。 - 400(Bad Request):请求错误,服务器未能理解请求。 - 403(Forbidden):服务器拒绝该请求。 - 404(Not Found):服务器无法找到请求的资源。 5. 5xx(服务器错误状态码):表示服务器处理请求时发生错误。 - 500(Internal Server Error):服务器内部错误,无法完成请求。 - 503(Service Unavailable):服务器暂时无法处理请求。 以上是常见的HTTP状态码及其含义,了解它们对于Web开发和调试非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值