日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HTTP 200 OK和HTTP 304 Not modified的由来

發布時間:2023/12/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP 200 OK和HTTP 304 Not modified的由来 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這兩個字段都和HTTP協議的緩存控制相關。

瀏覽器緩存機制是通過HTTP協議Header里的Cache-Control(或Expires)和Last-Modified(或 Etag)等字段來實現。

這兩個字段的作用:

1. 接收響應時,瀏覽器決定文件是否需要被緩存;

2. 需要加載文件時,瀏覽器決定是否需要發出請求的字段。

看一些例子:

Cache-Control:max-age=115360000,表示緩存有效期為115360000秒。如果115360000秒內需要再次請求這個文件,瀏覽器不會發出向服務器發出請求,而是直接使用本地的緩存的文件。這是HTTP/1.1標準中的字段。

這總情況能在Chrome開發者工具的Network標簽頁里看到from disk cache的提示:

從本地緩存中讀取文件非常快速,上面的例子只花費了6毫秒:

Expires: Thu, 31 Dec 2018 23:55:55 GMT,表示該文件的過期時間是2018年12月31日晚上23點55分55秒,在這個時間之前瀏覽器都不會再次發出請求去獲取該文件。這是HTTP/1.0中的字段。

在Chrome開發者工具的network標簽頁里能看到:

下面兩個字段是發起請求時,服務器決定文件是否需要更新的字段。

Last-Modified: Thu, 26 Jul 2018 05:41:21 GMT,這表示這個文件最后的修改時間是2018年7月26日5點41分21秒。

瀏覽器會在下次請求的時候,把Last-Modified的值作為Request Header的If-Modified-Since字段帶上。如果瀏覽器緩存的文件已經超過了Cache-Control(或者Expires),那么需要加載這個文件時,就會發出請求,請求的Header有一個字段為If-Modified-Since,如下圖所示:

服務器接收到請求后,會把文件的Last-Modified時間和這個時間對比,如果時間沒變,那么瀏覽器將返回304 Not Modified給瀏覽器:

如果時間有變化,那么服務器會返回200 OK,并返回相應的內容給瀏覽器。

下圖第9行的get_header_field方法是服務器從瀏覽器發送過來的HTTP請求提取頭部字段If-Modified-Since的值。

下圖第16行的set_header_field方法是服務器設置Last-Modified頭部字段的值。

下圖就是服務器設置304 Not Modified響應的位置:

要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:

總結

以上是生活随笔為你收集整理的HTTP 200 OK和HTTP 304 Not modified的由来的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。