瀏覽器快取與HTTP 304狀態碼

2021-09-27 06:51:30 字數 818 閱讀 2635

為什麼網際網路公司專案中,靜態資源url後面會加上乙個時間戳。

作用:控制快取。最終目的是為了控制專案上線的時候,靜態資源與老瀏覽器快取靜態資源避免衝突。

解決辦法:加上時間戳 規範 t=專案上線時間(毫秒數)

靜態資源快取

實際專案中在發布版本的時候,可能由於瀏覽器快取導致與伺服器端**發生衝突。這時候可以在靜態資源請求後面加上時間戳,對應每次發布版本的時間。

http 304狀態碼

客戶端在請求乙個檔案的時候,發現自己快取的檔案有 last modified ,那麼在請求中會包含 if modified since ,這個時間就是快取檔案的 last modified 。因此,如果請求中包含 if modified since,就說明已經有快取在客戶端。服務端只要判斷這個時間和當前請求的檔案的修改時間就可以確定是返回 304 還是 200 。

對於靜態檔案,例如:css、,伺服器會自動完成 last modified 和 if modified since 的比較,完成快取或者更新。但是對於動態頁面,就是動態產生的頁面,往往沒有包含 last modified 資訊,這樣瀏覽器、閘道器等都不會做快取,也就是在每次請求的時候都完成乙個 200 的請求。

因此,對於動態頁面做快取加速,首先要在 response 的 http header 中增加 last modified 定義,其次根據 request 中的 if modified since 和被請求內容的更新時間來返回 200 或者 304 。雖然在返回 304 的時候已經做了一次資料庫查詢,但是可以避免接下來更多的資料庫查詢,並且沒有返回頁面內容而只是乙個 http header,從而大大的降低頻寬的消耗,對於使用者的感覺也是提高。

http快取 瀏覽器快取

如果以下題目都能快速回答,那此文章也就沒有必要要看啦 1.講一下http快取 強快取,協商快取 2.如何控制強 協商快取 expires,cache control,etag if none match,if modified sine last modified 3.cache control有哪...

瀏覽器http快取

強快取 強快取命中不會傳送請求到伺服器端,直接從本地快取中獲取資源,狀態碼200 from cache 協商快取 協商快取會傳送請求到伺服器,伺服器通過請求頭部欄位來驗證資源是否命中協商快取,如果命中,則返回狀態碼304 not modified 通知瀏覽器從快取中獲取資源 4.1 last mod...

HTTP 狀態碼 304 快取機制

客戶端第一次請求服務端的某個位址時,服務端會在響應時攜帶 etag 與 last modified 響應頭,客戶端下次再傳送同一位址的請求時,會攜帶 if none match 與 if modified since 請求頭,而if none match 就是 etag 的值,if modified...