Http 協議學習

  • 負載均衡
 - 所謂的四層負載,指的是工作在傳輸層上,基於TCP/IP協議的特性,例如IP地址、端口號等實現對後端服務器的負載均衡
 - 七層負載均衡:工作在應用層,看到是http協議,解析http報文裏的URI、主機名。資源類型等數據,再用適當的策略轉發給後端服務器
  • 緩存機制
緩存控制機制:

max-age:是生存時間,時間計算點是響應報文的創建時間(即離開服務器的時刻),
即包含鏈路傳輸過程中所有節點停留時間,瀏覽器也可以在請求頭裏加上Cache-control:max-age=0,
代表直接去服務器請求最新的報文

no-store:不允許瀏覽器緩存
no-cache:可以緩存,但是使用之前必須要去服務器檢驗是否過期,是否有更新的版本
must-revalidate:緩存不過期,可以使用,但是過期了就必須去服務器檢驗


條件請求:
- 條件請求最常用的是 “if-Modified-since”和“if-None-Match”,需要第一次響應報文提供“Last-modified”和“ETag”,然後第二次請求帶上原值,驗證資源是否變化

- Last-modified 就是文件最後修改時間
- Etag是實體標籤的縮寫,資源的唯一標識
  • http代理

Via:http中的規定的標準頭字段,代理服務器用字段 "Via"標明代理身份,代理服務器會將自身信息追加到字段尾部

爲了獲取客戶端的IP地址
- X-Forwarded-For:爲誰而轉發,每經過一個代理節點就會在字段裏追加一個信息
- X-Real-IP:只記錄客戶端IP地址,沒有代理信息

  • http緩存代理
源服務器緩存控制

緩存代理區分客戶端上的緩存和代理上的緩存
1. private 表示緩存只能在客戶端上保存,用戶私有,不能在代理上與人共享
2. public 緩存是完全公開的,誰都可以用

must-validate 和 proxy-validate
1.must-validate 過期就必須要回源服務器驗證
(一旦資源過期(比如已經超過max-age),在成功向原始服務器驗證之前,緩存不能用該資源響應後續請求。)


2.proxy-revalidate :代理的緩存過期後必須驗證,客戶端不用到源服務器,只驗證到代理就ok
(與must-revalidate作用相同,但它僅適用於共享緩存(例如代理),並被私有緩存忽略)


s-maxage:緩存的生存時間,限定代理上能夠存多久
客戶端仍然使用 max-age


客戶端緩存控制

max-stale[=<seconds>]
表明客戶端願意接收一個已經過期的資源。可以設置一個可選的秒數,表示響應不能已經過時超過該給定的時間。

min-fresh=<seconds>
表示客戶端希望獲取一個能在指定的秒數內保持其最新狀態的響應。

only-if-cached
表明客戶端只接受已緩存的響應,並且不要向原始服務器檢查是否有更新的拷貝。
示例

  • 重定向
301:永久重定向
302:臨時重定向

Location:字段指示了要跳轉的URI
Referer 和 Referrer-Policy :表示瀏覽器跳轉的來源,可用於統計和防盜鏈
  • http連接管理
http 0.9/1.0  默認是短連接
http 1.1 ,採用keep-alive 使用長連接機制

http的隊頭阻塞:http規定報文必須一發一收,形成一個隊列,排在前面的請求優先被處理,
如果隊首請求處理的太慢,隊列後面的請求也必須去等待

解決隊頭阻塞方案:
- 併發連接:瀏覽器同時對一個域名發起多個長連接,衆多瀏覽器對於一個域名的默認連接數是 6-8個連接數
- 域名分片:一個網站弄多個域名,多個域名指向同一臺服務器,提高連接數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章