文章目錄
- 強緩存
- 一、Expires(http1.0 規范)
- 二、cache-control(http1.1 出現的 header 信息)
- Cache-Control 的常用選項
- Cache-Control 常用選項的選擇
- 三、弊端
- 協商緩存
- 一、ETag
- 二、If-None-Match
- 三、Last-modified
- 四、If-Modified-Since
- 瀏覽器的三種刷新方式
- 靜態資源部署策略-資源(一)
- 靜態資源部署策略-html(二)
- 動態請求靜態化處理
- 架構改進-全頁面靜態化
- 交易驗證優化
- 數據庫行鎖性能優化-版本一??
- 數據庫行鎖性能優化-版本二??
- 異步同步數據庫
- 存在的問題
- 回查機制-庫存操作流水
- 庫存數據庫最終一致性保證
- 庫存售罄
- 現有缺陷
- 秒殺令牌原理
- 隊列泄洪原理

強緩存
一、Expires(http1.0 規范)
Expires 的值為一個絕對時間的 GMT 格式的時間字符串,例如 Mon,10 Jun 2015 21:31:24 GMT。若發送請求的時間在 expires 之前,則本地緩存有效;否則,將發送請求至服務器以獲取資源。
二、cache-control(http1.1 出現的 header 信息)
通過 max-age 值進行判斷,它是一個相對值。瀏覽器依據第一次的請求時間和 Cache-Control 設置的有效期,計算出資源過期時間。再將該過期時間與當前時間進行比較,若請求時間在過期時間之前,則能命中緩存,否則不行。Cache-Control 的設置由服務器完成,前端無需進行任何操作。
Cache-Control 的常用選項
選項 | 含義 |
---|---|
max-age=100 | 緩存 100 秒后過期,資源緩存在本地。 |
no-cache | 不使用本地緩存,使用協商緩存。先與服務器確認返回的響應是否被更改,若之前的響應中存在 ETag,則請求時會與服務端驗證。若資源未被更改,則可避免重新下載。 |
no-store | 所有內容都不會被緩存,既不使用強制緩存也不使用協商緩存。每次用戶請求該資源,都會向服務器發送一個請求,服務器再返回資源。 |
public | 可以被所有的用戶緩存,包括客戶端和代理服務器。 |
private | 只能被客戶端緩存,不允許 CDN 等中繼緩存服務器對其緩存。 |
s-maxage | 覆蓋 max-age,作用域與 max-age 一樣,但只用于代理服務器中緩存。 |
在瀏覽器下一次請求同樣的文件時,瀏覽器會檢查 max-age 是否過期。若未過期,則直接從本地緩存中獲取資源,不會向服務器再次發起請求;若過期,瀏覽器會像第一次一樣向服務器發起請求。一旦使用強緩存且未過期,就不會再向服務器發起請求。