[ HTTP使用指南 | 青训营笔记]

76 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

今日学习Http的使用指南

  • HTTP(Hyper Text Transfer Protocol):  全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

image.png

http状态码大全
  • 100,接受的请求正在处理,信息类状态码
  • 200(成功)服务器已成功处理了请求。
  • 302,临时性重定向,表示资源临时被分配了新的 URL
  • 303,表示资源存在另一个URL,用GET方法获取资源
  • 304,(未修改)自从上次请求后,请求网页未修改过。服务器返回此响应时,不会返回网页内容
  • 301,永久性重定向,表示资源已被分配了新的 URL
  • 302,临时性重定向,表示资源临时被分配了新的 URL
  • 303,表示资源存在另一个URL,用GET方法获取资源
  • 304,(未修改)自从上次请求后,请求网页未修改过。服务器返回此响应时,不会返回网页内容
  • 400(错误请求)服务器不理解请求的语法
  • 401表示发送的请求需要有通过HTTP认证的认证信息
  • 403(禁止)服务器拒绝请求
  • 404(未找到)服务器找不到请求网页
  • 500,(服务器内部错误)服务器遇到错误,无法完成请求
  • 503,表示服务器处于停机维护或超负载,无法处理请求

强缓存与协商缓存

浏览器缓存过程

  • 浏览器第一次加载资源,服务器返回200,浏览器将资源文件从服务器上请求下载下来,并把文件、文件的返回时间、response header一并缓存

  • 下一次加载资源时,先比较当前时间和上一次返回200时的时间差
    如果HTTP为1.0时,则用expires判断是否过期
    如果HTTP为1.1及其以上时,则查看cache-control,如果值是no-cache,则表示不缓存,则直接去请求数据;如果是max-age,则判断时间差是否大于max-age,若小于max-age,则表示没有过期,命中强缓存,不发请求直接从本地缓存读取该文件;如果时间差大于max-age,则表示资源过期了,则向服务器发送请求,并且header中携带有If-None-Match、If-Modified-Since、Etag值等

  • 如果服务器收到的请求头中,有Etag值优先根据Etag的值判断被请求的文件有没有做修改,
    如果Etag值一致则没有修改,命中协商缓存返回304,则读取缓存资源;
    如果Etag值不一致则有改动,则直接返回新的资源,并带上新的Etag值;

  • 如果服务器收到的请求头中,没有Etag值,则将If-Modified-Since被请求文件的最后修改时间做比对,
    如果一致则没有修改,命中协商缓存,返回304;
    如果不一致则有修改,则返回新的文件和并在响应头中携带last-modified ,下次请求时通过If-Modified-Since携带上last-modified的值;

image.png