http 面试题

一、http 状态码

1. 状态码分类

  • 1xx 服务器收到请求。
  • 2xx 请求成功,如 200。
  • 3xx 重定向,如 302。
  • 4xx 客户端错误,如 404。
  • 5xx 服务器错误,如 500。

2. 常见状态码

  • 200 成功。
  • 301 永久重定向(配合 location,浏览器自动处理)。
  • 302 临时重定向(配合 location,浏览器自动处理)。
  • 304 资源未被修改。
  • 404 资源未找到。
  • 403 没有权限。
  • 500 服务器错误。
  • 504 网关超时。

二、http methods

1. 传统 methods

  • get 获取服务器的数据。
  • post 向服务器提交数据。

2. 现在 methods

  • get 获取数据
  • post 新建数据
  • patch/put 更新数据
  • delete 删除数据

3. Restful API

  • 传统 API 设计:把每个 url 当作一个功能。
  • Restful API 设计:把每个 url 当作一个唯一的资源。

如何设计成一个资源?

  • 尽量不用 url 参数。

  • 用 method 表示操作类型。

三、http headers

1. 常见的 Request Headers

Header解释
Accept浏览器可接收的数据格式
Accept-Encoding浏览器可接收的压缩算法,如 gzip
Accept-Language浏览器可接收的语言,如 zh-CN
connection:keep-alive一次 TCP 连接重复使用
cookieHTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器
Host指定请求的服务器的域名和端口号
User-Agent(简称 UA )浏览器信息
Content-type发送数据的格式,如 application/json

2. 常见的 Responce Headers

Header解释
Content-type返回数据的格式,如 application/json
Content-length返回数据的大小,多少字节
Content-Encoding返回数据的压缩算法,如 gzip
Set-Cookie设置Http Cookie
Cache-Control控制强制缓存的逻辑

3. 缓存相关的 headers

属于响应头:

Responce Headers说明
Cache-Controlno-cache, no-store, max-age, public, private在HTTP1.1版本之后,控制浏览器是否可以缓存资源、强制缓存校验、缓存时间
Expires资源缓存过期时间在HTTP1.1版本之前,如果与Cache-Control同时设置,则只有Cache-Control的设置生效。
Last-modified请求的资源最近更新时间弱校验, 根据文件修改时间,可能内容未变,不精确
Etag文件指纹(hash码、时间戳等可以标识文件是否更新)强校验,根据文件内容生成精确

属于请求头:

Request Headers说明
If-None-Match缓存响应头中的 ETag 值发送给服务器比对文件是否更新(精确)
If-Modified-Since缓存响应头中的 Last-Modified 值发送给服务器比对文件是否更新(不精确)

四、http 缓存

1. 关于缓存的介绍

  • HTTP文件缓存是基于HTTP协议的浏览器端文件缓存机制。
  • 在文件重复请求的情况下,浏览器可以根据HTTP响应的协议头信息判断是从服务器端请求文件还是从本地读取文件。
  • 哪些资源可以被缓存?---- 静态资源(js css img)

2. http 缓存策略(强制缓存 + 协商缓存)

强制缓存:

  • 强制缓存在缓存数据未失效的情况下(即Cache-Control的max-age没有过期或者Expires的缓存时间没有过期),那么就会直接使用浏览器的缓存数据,不会再向服务器发送任何请求。

cache-control 常用值:

属性值说明
max-age资源缓存的最大时间
no-cache不强制缓存,但有可能协商缓存
no-store

既不强制缓存,又不协商缓存,反正就是不缓存(气完了)

private仅向特定用户返回响应
public可向任意方提供响应缓存

关于 Expires:

  • 同在 Response Headers 中。
  • 同为控制缓存过期。
  • 已被 Cache-Control 代替。

协商缓存(对比缓存):

  • 服务器端缓存策略
  • 服务器判断客户端资源,是否和服务器端资源一样。
  • 一致则返回 304,否则返回 200 和最新资源。

Last-Modified 和 Etag:

  • 会优先使用 Etag。
  • Last-Modified 只能精确到秒级。
  • 如果资源被重复生成,而内容不变,则 Etag 更精确。

3. http 缓存流程图

4. 刷新操作方式,对缓存的影响

实现方式缓存策略
正常操作地址栏输入 url、跳转链接、前进后退等强制缓存有效,协商缓存有效
手动刷新F5、点击刷新按钮、右击菜单刷新强制缓存失效,协商缓存有效
强制刷新Ctrl + F5强制缓存失效,协商缓存失效
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值