K——最近鄰演算法(KNN)
阿新 • • 發佈:2022-03-24
快取術語
- 命中:在快取中找到資料;
- 不命中/穿透:在快取中未找到資料;
- 命中率:命中次數/總次數;
強快取
Cache-Control
用於在 http 請求和響應中,通過指定指令來實現快取機制。
可選值
-
可快取性:
-
public
:所有方可以快取; -
private
:只有瀏覽器可以快取; -
no-cache
:每次必須先詢問伺服器資源是否已更新(協商快取); -
no-store
:不使用任何快取;
-
-
快取期限
-
max-age
:秒(儲存週期); -
s-maxage
:秒(共享快取如代理等);
-
常用組合
# 關閉快取 Cache-Control: no-store # 使用協商快取 Cache-Control: no-cache Cache-Control: max-age=0 # 使用共享快取,且快取時間較長,適用於不經常變動的靜態資源 Cache-Control:public, max-age=31536000
相關頭部
-
Expires
響應頭包含日期/時間, 即在此時候之後,響應過期。如果在Cache-Control
響應頭設定了max-age
或者s-max-age
指令,那麼Expires
頭會被忽略(該頭很少用了)。
協商快取
-
Last-Modified/If-Modified-Since
:基於時間。-
Last-Modified
響應首部,資源做出修改的日期及時間。 -
If-Modified-Since
請求首部,上一次Last-Modified
值。If-Modified-Since
只可以用在GET
或HEAD
請求中。
-
-
ETag/If-None-Match
:基於實體內容生成一段 hash 字串,http1.1 引入,優先順序高於Last-Modified/If-Modified-Since
-
ETag
響應首部,這可以讓快取更高效,並節省頻寬,因為如果內容沒有改變,Web 伺服器不需要傳送完整的響應。 -
If-None-Match
請求首部,上一次ETag
值。
-
有了 Last-Modified 為什麼還要 ETag?
-
Last-Modified
精確度比ETag
要低,Last-Modified
基於時間,精度是秒,假如檔案在 1 秒之內修改,Last-Modified
無法識別; - 一些資源內容未變,但最後修改時間改變了,基於時間來說,資源改變了,但基於內容來說,資源未變;
- 某些伺服器無法精準獲取檔案修改時間。