小宋爱睡觉 小宋爱睡觉
首页
  • HTML
  • CSS
  • JavaScript
  • Vue
  • React
  • 计算机网络
  • 浏览器原理
  • 性能优化
  • 设计模式
手写系列
  • 字符串
  • 数组
  • 链表
  • 树
  • 动态规划
  • 排序算法
  • GitHub (opens new window)
  • JueJin (opens new window)
首页
  • HTML
  • CSS
  • JavaScript
  • Vue
  • React
  • 计算机网络
  • 浏览器原理
  • 性能优化
  • 设计模式
手写系列
  • 字符串
  • 数组
  • 链表
  • 树
  • 动态规划
  • 排序算法
  • GitHub (opens new window)
  • JueJin (opens new window)
  • HTTP协议与请求方法
  • HTTPS协议
  • 状态码
    • 状态码类别
    • 同样是重定向 302 303 307有什么区别
    • 浏览器会缓存301页面吗,如何清除?
    • 介绍下304过程
    • HTTP状态码是304多好还是少好
  • DNS和网络模型
  • TCP和UDP
  • WebSocket
  • 计算机网络
Crucials
2021-12-12
状态码类别
同样是重定向 302 303 307有什么区别
浏览器会缓存301页面吗,如何清除?
介绍下304过程
HTTP状态码是304多好还是少好

状态码

# 状态码

# 状态码类别

1xx 信息性状态码 接收的请求正在处理
2xx 成功状态码 请求正常处理完毕
3xx 重定向状态码 需要进行附加操作才能完成请求
4xx 客户端错误状态码 服务器无法处理请求
5xx 服务端错误状态码 服务器处理请求出错
  1. 1xx请求还在处理

    • 100 (客户继续发送请求,这是临时响应) 这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端印当据需发送请求的剩余部分,或者如果请求已经完成,忽略这个响应,服务器必须在请求完成后向客户端发送一个最终响应
    • 101 Switching Protocols。在HTTP升级为WebSocket的时候,如果服务器同意变更,就会发送状态码 101
  2. 2xx成功

    • 200 OK 表示从客户端发的请求服务端正确处理了
    • 204 No content 请求成功 响应报文不含实体的主体部分
    • 205 reset content 请求成功 响应报文不含实体的主体部分 但与204不同的是要求请求方重置内容
    • 206 partial content 进行范围请求
  3. 3xx重定向

    1. 301 永久性重定向 表示资源已被分配了新的URL(搜索引擎会记录301的location指向的地址)
    2. 302 临时性重定向 表示资源临时被分配了新了URL(未登录的用户重定向到登录页面 访问404页面重定向到首页)
    3. 303 资源存在另一个URL 应该用get方法获取资源(一般用于上传文件后,返回的重定向到消息确认页面或者上传进度页面)
    4. 304 not modified 服务器允许访问资源 但是发送请求未满足的情况(浏览器存在缓存)
    5. 307 临时重定向 但是与303不同的是期望客户端保持请求方法不变向新的地址发出请求 (一般浏览器会自动由post -> get但是307不会 还是post -> post)
  4. 4xx 客户端错误

    1. 400 bad request 请求报文语法错误或格式不对
    2. 401 unauthorized 表示请求需要身份验证
    3. 403 forbidden 请求资源被服务器拒绝
    4. 404 not found 在服务器未找到请求的资源
    5. 405 method not allow 服务器禁止使用这种方法
  5. 5xx服务器错误

    1. 500 server error 服务器请求执行时错误
    2. 501 服务器不支持当前请求的某个功能
    3. 502(错误网关)服务器作为网关或代理,从上游服务器收到无效响应
    4. 503 service unavailable服务器暂时在超负载或停机维护(nginx限速)
    5. 504 gateway timeout 网关或代理服务器无法在规定时间获得响应(代码执行时间超过 或 死循环)

# 同样是重定向 302 303 307有什么区别

302是http1.0的协议状态码,在1.1后为了细化302,又分出了303和307

303明确了客户端应当采用get方法获得资源,会把post请求变成get请求进行重定向,307会遵照浏览器标准,不会从post变成get

# 浏览器会缓存301页面吗,如何清除?

现在我们假设不小心将初始页面永久重定向到了 301 页面,现在想取消这一行为,临时重定向到 302 页面。

我们发现在301之后,浏览器会记住第一次的301,忽略之后的其他重定向

原因是如果我们没有提供明确的缓存头,浏览器就会默认永久缓存 301 响应,因为 301 是永久重定向的意思。

如何清除301重定向

用户端:

  • 控制台禁用缓存
  • 清除历史记录
  • Network面板清除缓存

服务端:

  • 设置Cache-Control: no-store/no-cache

# 介绍下304过程

  • 浏览器请求资源时首先命中资源的Expires 和 Cache-Control,Expires 受限于本地时间,如果修改了本地时间,可能会造成缓存失效,可以通过Cache-control: max-age指定最大生命周期,状态仍然返回200,但不会请求数据,在浏览器中能明显看到from cache字样。
  • 强缓存失效,进入协商缓存阶段,首先验证ETag可以保证每一个资源是唯一的,资源变化都会导致ETag变化。服务器根据客户端上送的If-None-Match值来判断是否命中缓存。
  • 协商缓存Last-Modified/If-Modified-Since阶段,客户端第一次请求资源时,服务服返回的header中会加上Last-Modified,Last-modified是一个时间标识该资源的最后修改时间。再次请求该资源时,request的请求头中会包含If-Modified-Since,该值为缓存之前返回的Last-Modified。服务器收到If-Modified-Since后,根据资源的最后修改时间判断是否命中缓存

# HTTP状态码是304多好还是少好重要

状态码304是服务器为了提高网站访问速度,而对之前访问的页面指定缓存机制,当客户端对这些页面进行请求,服务端会判断内容是否和之前相同,如果相同客户端调用缓存内容

但是搜索引擎会更加青睐更新频率的网站,通过特定的时间对网站抓取返回的状态码来调节网站抓取频次,若一直是304,蜘蛛就会降低抓取次数,相反,若网站变化频率快,每次都能获取新内容,蜘蛛的回访率会变高

产生304较多的原因:

  • 页面更新长或不更新
  • 纯静态页面

304过多问题

  • 网站快照停止

  • 收录减少

  • 搜索引擎权重下降

上次更新: 2022/03/20, 19:40:28
HTTPS协议
DNS和网络模型

← HTTPS协议 DNS和网络模型→

Copyright © 2021-2025 粤ICP备2021165371号
  • 跟随系统
  • 浅色模式
  • 深色模式