題目:
- HTTP常見的狀態碼有哪些
先說一下狀態碼分類,再舉例一下常見狀態碼 - HTTP常見的header有哪些
response header / request header / 緩存header - 什么是restful API
- 描述一下HTTP的緩存機制(重要)
HTTP狀態碼
狀態碼分類
- 1xx 服務器收到請求
- 2xx 請求成功
- 3xx 重定向
- 4xx 客戶端錯誤
- 5xx 服務端錯誤
常見狀態碼
- 200 成功
- 301 永久重定向 配合location 瀏覽器自動處理,適用於域名到期,瀏覽器不會訪問老的域名
- 302 臨時重定向 配合location 瀏覽器自動處理 ,下次會再次訪問老的域名;可以控制和攔截,可以做統計
- 304 資源未被修改,資源在本地有效,不需要重新請求
- 404 資源未找到
- 500 服務器錯誤
- 504 網關超時
關於協議和規范
就是一個約定,要求大家都跟着執行,不要違反規范,例如IE瀏覽器
HTTP methods
傳統的methods
- get獲取服務器的數據
- post向服務器提交數據
簡單的網頁功能,就這兩個操作
現在的methods
- get獲取數據
- post新建數據
- patch/put更新數據
- delete刪除數據
restful API
一個新的API設計方法(早已推廣使用)
傳統API設計:把每個URL當做一個功能
restful API設計:把每個URL當做一個唯一的資源
如何設計成一個資源:盡量不用URL參數
舉例
博客列表的API
博客的增刪改查
HTTP headers
常見的request headers
- accept 瀏覽器可接收的數據格式
- accept-encoding 瀏覽器可接收的壓縮算法,如gzip
- accpet-languange 瀏覽器可接收的語言,如zh-CN
- connection:keep-alive 一次TCP連接重復使用
- cookie
- host 請求的域名是什么
- user-agent 瀏覽器信息
- content-type 發生數據的格式,如applicatioin/json
常見的response headers
- content-type 返回數據的格式,如application/json
- content-length 返回數據的大小,多少字節
- content-encoding 返回數據的壓縮算法,如gzip
- set-cookie 修改cookie
自定義headers
緩存相關的headers
- cache-control
- last-modified if-modified-since
- etag if-none-match
HTTP 緩存
關於緩存的介紹
- 什么是緩存
- 為什么需要緩存 需要頁面加載更快一些 網絡請求不穩定 資源要求高
- 哪些資源可以被緩存——靜態資源 js css img
http緩存策略(強制緩存+協商緩存)
強制緩存
- cache-control
在response headers中,服務器端控制哪個資源可以加;
控制強制緩存的邏輯;
緩存過期了,再次請求服務器(如何判斷緩存過期,比較cache-control的max-age);
no-cache 不用本地強制緩存; no-store 不緩存
協商緩存
- 服務器端存儲策略
- 服務器判斷客戶端資源,是否和服務器端的資源一樣
- 一致則返回304,否則返回200和最新的資源
- 資源標識:資源符號,通過資源標識來判斷是否一致(客戶端資源、服務器資源)
- last-modified 資源的最后修改時間 \
- etag 資源的唯一標識
- 會優先使用etag,last-modified 只能請卻道秒級,etag更精確
以下給出資源標識為last-modified和etag的協商緩存過程:
HTTP緩存綜述
刷新操作方式,對緩存的影響
三種刷新操作
- 正常操作:地址欄輸入url 跳轉鏈接 前進后退 強制緩存有效,協商緩存有效
- 手動刷新:f5 點擊刷新按鈕 右擊菜單刷新 強制緩存失效,協商緩存有效
- 強制刷新:Ctrl + f5 強制緩存失效,協商緩存失效