2025js——面试题(8)-http
题目:
一、http常见的状态码有哪些?
状态码分类:
1XX 服务器收到请求
2XX 请求成功,如200
3XX重定向,如302
4XX客户端错误,如404
5XX服务端错误,如500
常见状态码:
200 成功
301永久重定向(配合location,浏览器自动处理)(域名到期出现的域名)
302临时重定向(配合location,浏览器自动处理)(返回302,然后进入新的地址)
304资源未被修改
404资源未找到
403没有权限
500服务器错误
504网关超时
二、http常见的header有哪些?
常见的Request Headers(客户端发请求到服务端)
1.Accept浏览器可接受的数据格式
2.Accept-Encoding 浏览器可接受的压缩算法
3.Accept-language浏览器可接受的语言。如zh-CN
4.Connection:keep-alive 一次TCP连接重复使用
5.cookie
6.Host:域名
7.user-Agent(简称UA)浏览器信息
8.Content-type发送数据格式,如application/json
常见的Response Headers(服务端返回到客户端)
1.Content-type返回数据格式,如application/json
2.Content-length 返回数据大小,多少字节
3.Content-Encoding 返回数据的压缩算法,如gzip
自定义header
缓存相关的header
Cache-ControlExpires
Last-Modified
Etag
If-Modified-Since
If-None-Match
三、什么是Restful API?
四、描述一下http的缓存机制?(重要)
关于缓存的介绍
完整的流程图
http缓存策略(强制缓存+协商缓存)
1.强制缓存:初次请求服务端设置cache-control
cache-control的值:
max-age:最核心的缓存有效期指令
no-cache:强制进入协商缓存,非 “不缓存”
no-store:完全禁止缓存,每次必请求服务器
指令 | 是否允许本地缓存 | 是否触发协商缓存 | 服务器是否可能返回 304 | 典型应用场景 |
---|---|---|---|---|
max-age | 是 | 过期后触发 | 是(资源未更新时) | 静态资源(图片、JS、CSS) |
no-cache | 是(但需验证) | 每次请求都触发 | 是(资源未更新时) | 频繁更新的动态资源(首页 HTML) |
no-store | 否(完全不缓存) | 无(必须全量请求) | 否(必返回 200) | 敏感资源(支付页、隐私数据) |
2.协商缓存:
服务端缓存策略
服务端判断客户端资源,是否和服务端资源一样
一致则返回304,否则返回200和最新的资源
协商缓存资源标识
在 Response Headers 中,有两种
Last-Modified 资源的最后修改时间
Etag 资源的唯一标识(一个字符串,类似人类的指纹)
Last-Modified
Etag
Last-Modified 和 Etag区别
会优先使用 Etag
Last-Modified 只能精确到秒级
刷新操作方式。对缓存的影响
正常操作:地址栏输入url,跳转链接,前进后退等
手动刷新:F5,点击刷新按钮,右击菜单刷新
强制刷新:ctrl + F5
正常操作:强制缓存有效,协商缓存有效
手动刷新:强制缓存失效,协商缓存有效
强制刷新:强制缓存失效,协商缓存失效
总结:强制缓存 Cache-Control
协商缓存 Last-Modified和 Etag,304 状态码
完整的流程图