石头人面试HTTP之请求&响应&缓存

前言

小伙伴们在面试过程当中会遇到一些HTTP/请求&响应&缓存相关问题html

我大概收集整理了下nginx

  1. 常见Http请求头/响应头
  2. Http报文的请求会有几个部分
  3. 缓存相关的HTTP请求头
  4. Http缓存控制

这些问题咱们均可以在如下文章中找到答案面试

请求报文和响应报文的组成结构

  1. 请求报文
    • 请求行 GET/HTTP/2.0
    • 请求头
    • 空行
  2. 响应报文
    • 状态行 HTTP/2.0 200 OK
    • 响应头
    • 空行
    • 报文主体 <html>...</html>

请求头 (Request Headers)

  1. Accept 客户端可接受的资源类型chrome

    • text/html : text/html类型
    • */* : 全部类型
  2. Accept-Encoding 客户端可接受的压缩编码类型api

    • gzip, deflate
  3. Accept-Language 客户端可接受的语言跨域

    • zh-CN,zh;q=0.9,en;q=0.8
  4. Connection 表示是否须要持久链接缓存

    • keep-alive : 持久连接
    • close : 一个请求完成后即关闭
  5. Cookie 保存状态服务器

  6. Host 接受请求的服务器地址,能够是 IP 端口号,也能够是域名cors

    • xiaoce-discount-storage-api-ms.juejin.im
  7. Referer 用户在访问当前资源以前的位置post

  8. Sec-Fetch-Mode 表明请求的模式

    • cors
  9. Sec-Fetch-Site 表明请求的來源是同源仍是跨域

    • same-site

8,9是一个新的草案,叫作 Fetch Metadata Request Headers。目前只有 chrome 才会加上這些标头,Firefox, Safari 不会

响应头 (Response Headers)

  1. Access-Control-Allow-Headers 代表服务器容许请求中携带字段

    • Content-Type
  2. Access-Control-Allow-Methods 代表服务器容许客户端使用方法

    • GET, POST, PUT, DELETE, OPTIONS, HEAD
  3. Access-Control-Allow-Origin 服务器容许客户端访问使用的域名

  4. Allow 服务器支持哪些请求方法 ,不容许则返回405

    • GET, POST, PUT, DELETE, OPTIONS, HEAD
  5. Connection 表示是否须要持久链接

    • keep-alive : 持久连接
    • close : 一个请求完成后即关闭
  6. Content-Type 返回内容媒体类型

    • text/html;charset=UTF-8
  7. Date 原始服务器消息发出的时间

    • Sun, 29 Dec 2019 03:24:52 GMT
  8. Server 服务器应用程序的软件名称和版本

    • nginx
  9. Transfer-Encoding 文件传输编码

    • chunked : 服务器发送的资源的方式是分块发送的
  10. Expires 服务器返回的文件有效期 http1.0提出

  11. Last-Modified 指服务器文件的最后修改时间, http1.0提出

  12. Cache-Control 指文件缓存的有效期 http1.1提出

    • max-age : 单位是s,设置文件最大缓存时间,用得最多
    • no-cache : 不会被缓存
  13. ETag 版本号是由服务端随机生成, http1.1提出

HTTP缓存

Response Headers 中 10 - 12 都是缓存控制相关 请求头

  1. 支持高版本,就用高版本,不然用低版本
  • Cache-Control > Expires, ETag > Last-Modified
  1. 依照就近原则,先找本地缓存,没有再向服务器发请求
  • Expires > Last-Modified, Cache-Control > ETag

下一章

石头人面试HTTP之http状态码

相关文章
相关标签/搜索