石頭人面試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狀態碼

相關文章
相關標籤/搜索