http的快取,主要存在本地瀏覽器和web**伺服器中。
etag全稱entity tag,用來標識乙個資源。
在伺服器返回響應時包含這個值,不同的資源response返回不一樣的etag。
其實就是標識,hash值。
在下次再請求相同的資源時,瀏覽器會在if-none-match中帶著etag的傳給伺服器,如果伺服器發現etag和上次相同,直接返回304資源未發生改變,瀏覽器使用快取資料。
cache-control 主要用來控制快取相關的東西。
cache-control 頭在 http/1.1 規範中定義,取代了之前用來定義響應快取策略的頭(例如 expires)。當前的所有瀏覽器都支援 cache-control,因此,使用它就夠了。
2.1 max-age
max-age是允許響應被重用的時間,通俗的說是快取有效期,單位是 秒。
要注意的是,在max-age時間內,即使伺服器資源發生改變,瀏覽器也不會得到通知,會繼續使用快取。
比如,max-age=60,在60秒內,不會向伺服器發生任何請求,包括驗證資源是否郵箱,而直接使用快取資料。
2.2 public和private
public 是用來宣告此快取是公共的,瀏覽器和web**伺服器都可以快取。
private 宣告此快取是私有的,web**不允許快取(比如cdn)
預設情況下是 public 。
比如 cache-control:public, max-age=60 = cache-control: max-age=60
2.3 no-cache
no-cache 的誤區!no-cache不是指 不快取,而是指每次請求資源之前 都先向伺服器驗證 該資源是否發生改變。
驗證方式就是 上面提到的etag
2.4 no-store
這個才是真正的不快取,只要設定了cache-control:no-store,那麼所有的瀏覽器和**都不會快取資料,每次都是向伺服器請求最新的資料。
HTTP快取原理
通過internet獲取資源既緩慢,成本又高。為此,http協議裡包含了控制快取的部分,以使http客戶端可以快取和重用以前獲取的資源,從而優化效能,提公升體驗。雖然http中關於快取控制的部分,隨著協議演進,有一些變化。但我覺著,作為後端程式設計師,在開發web服務時,只需要關注請求頭if non...
後端http快取原理
通過internet獲取資源既緩慢,成本又高。為此,http協議裡包含了控制快取的部分,以使http客戶端可以快取和重用以前獲取的資源,從 而優化效能,提公升體驗。雖然http中關於快取控制的部分,隨著協議演進,有一些變化。但我覺著,作為後端程式設計師,在開發web服務時,只需要關注請求頭 if n...
後端http快取原理
通過internet獲取資源既緩慢,成本又高。為此,http協議裡包含了控制快取的部分,以使http客戶端可以快取和重用以前獲取的資源,從 而優化效能,提公升體驗。雖然http中關於快取控制的部分,隨著協議演進,有一些變化。但我覺著,作為後端程式設計師,在開發web服務時,只需要關注請求頭 if n...