初学 HTTP [状态码 Restful Headers 缓存]

HTTP

常见状态码

  • 1 开头 表示服务器接收到请求(使用较少)
  • 2 开头 表示加载成功 200 加载成功
  • 3 开头 表示重定向 301永久重定向 302 临时重定向 304 缓存未改变
  • 4 开头 表示客户端错误 404 页面未找到
  • 5 开头 表示服务端错误

Restful 风格 url

传统风格url

  • 查询 /user/query?name=tom GET
  • 详情 /user/getInfo?id=1 GET
  • 创建 /user/create?name=tom POST
  • 修改 /user/update?id=1&name=jquery POST
  • 删除 /user/delete?id=1 GET

RESTful风格

  • 查询 /user?name=tom GET
  • 详情 /user/1 GET
  • 创建 /user POST
  • 修改 /user/1 PUT
  • 删除 /user/1 DELETE

http herders

Request Headers

  • Accept 浏览器可接受的数据格式
  • Accept-Encoding 浏览器可接收的编码
  • Accept-Languange 浏览器可接受的语言,如zh-CN
  • Connection: keep-alive 一次TCP连接重复使用
  • cookie 由浏览器生成,向服务器发送
  • host 请求的域名
  • User-Agent 浏览器信息
  • Content-type 发送数据的格式,如application/json

Response Headers

  • Content-type 返回数据格式
  • Content-length 返回数据的大小
  • Content-Encoding 返回数据的编码
  • Set-Cookie 服务端修改cookie

缓存 Header

  • Last-Modified 和 If-Modified-Since
  • ETag 和 If-None-Match
  • Cache-Control
  • Expires

自定义 header

可以自己定义请求头

HTTP 缓存

  • 缓存介绍
  • http 缓存策略(强制缓存,协商缓存)
  • 刷新操作方式

缓存介绍

什么是缓存: 可以将一些重复,没必要重复加载的文件 保存下来。

缓存作用: 加快网页加载速度,网络请求是整个页面加载中最耗时的部分,并且网络是不稳定的,可能加剧耗时

可以被缓存的文件: 静态资源 (js css img

缓存策略

一般来说,缓存方式分为两种 强制缓存与协商缓存

强制缓存

通过服务端控制

初次请求时,服务端会返回资源,并在请求头
中设置 Cache-Control 表示可以将该资源缓存。

再次请求时,客户端即可以从本地缓存中直接读取,耗时很少

如果缓存失效,则会再次请求服务端,服务端会再次返回资源,并设置缓存时间

Cache-Control
  • max-age 设置最大缓存策略
  • no-cache 表示不用强制缓存,每次都从服务端获取
  • no-s tore 表示不用本地缓存,也不用服务端缓存策略,交给服务端处理
  • private 只允许最终用户做缓存
  • public 允许中间路由,中间代理做缓存
  • 以前有种Expires 标准被 Cache-Control 代替

强制缓存会在返回头重设置Cache-Control 里面有最长缓存时间 ,是否允许代理服务器缓存,每次发送请求都会首先检查缓存是否失效,如果未失效则会直接触发强制缓存,否则才会发送请求去除法协商缓存

协商缓存
  • 是一种服务端缓存策略
  • 相比于强制缓存的自给自足,协商缓存就更类似于最后的一道兜底措施
  • 服务端判断客户端资源,是否和服务端资源一样
  • 一致则返回304,否则返回200 和最新的资源
  • 过程,初次请求时,服务器返回资源和资源标识,再次请求时,客户端带着资源表示去向服务器发起请求,服务器判断如果资源标识一样则返回304,否则返回新资源与新的资源标识
  • 资源标识: 在Response Headers中,Last-Modidied 资源最后修改时间,Etag 资源的唯一标识 优先使用Etag
  • 协商缓存流程 **发请求–>看资源是否过期–>过期–>请求服务器–>服务器对比资源是否真的过期–>没过期–>返回304状态码–>客户端用缓存的老资源。**并且每次请求后,都会记录下客户端最后一次发送请求中返回头中的Etag 与 last-modified(如果返回头的状态码是200才记录,否则不记录)

在这里插入图片描述

在这里插入图片描述

常规流程

第一次当客户端向服务器发起请求时,服务器会返回资源与状态码200,并且会在Response Headers 中返回 Cache-Control Etag Last-Modidiied 用于缓存操作


当客户端再次向服务器发起请求,服务器首先会检查本地 max-age 如果未超过最大缓存时间则会触发强制缓存,然后从本地读取资源并返回状态码304


否则判断是否有Etag 与 last-Modified 如果有,则会想服务器发送http请求带有if-modified-since 或 if-modified-since 如果 服务器判断缓存可用则会返回状态码304 然后客户端读取缓存(在这个过程中优先使用Etag 他有 一个 is none match 如果服务器判断Etag相等则将if none match 设为false 并返回304,如果设为true 还有最后的办法判断 if-Modified-Since 服务器会把这个时间与文件最后修改时间作比较,如果时间相同,则返回304)


否则客户端重新发起http请求,想服务器重新申请资源
在这里插入图片描述

刷新操作

正常操作: 输入url 对缓存有效 协商缓存有效

手动刷新 F5 : 强制缓存失效 ,协商缓存有效

强制刷新 : crtl + F5 强制缓存失效,协商缓存失效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值