溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何分析HTTP 200 OK和HTTP 304 Not modified的由來(lái)

發(fā)布時(shí)間:2021-12-30 17:40:43 來(lái)源:億速云 閱讀:181 作者:柒染 欄目:編程語(yǔ)言

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何分析HTTP 200 OK和HTTP 304 Not modified的由來(lái),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

這兩個(gè)字段都和HTTP協(xié)議的緩存控制相關(guān)。

瀏覽器緩存機(jī)制是通過(guò)HTTP協(xié)議Header里的Cache-Control(或Expires)和Last-Modified(或 Etag)等字段來(lái)實(shí)現(xiàn)。

這兩個(gè)字段的作用:

1. 接收響應(yīng)時(shí),瀏覽器決定文件是否需要被緩存;

2. 需要加載文件時(shí),瀏覽器決定是否需要發(fā)出請(qǐng)求的字段。

看一些例子:

Cache-Control:max-age=115360000,表示緩存有效期為115360000秒。如果115360000秒內(nèi)需要再次請(qǐng)求這個(gè)文件,瀏覽器不會(huì)發(fā)出向服務(wù)器發(fā)出請(qǐng)求,而是直接使用本地的緩存的文件。這是HTTP/1.1標(biāo)準(zhǔn)中的字段。

這總情況能在Chrome開(kāi)發(fā)者工具的Network標(biāo)簽頁(yè)里看到from disk cache的提示:

如何分析HTTP 200 OK和HTTP 304 Not modified的由來(lái)

從本地緩存中讀取文件非??焖?,上面的例子只花費(fèi)了6毫秒:

如何分析HTTP 200 OK和HTTP 304 Not modified的由來(lái)

Expires: Thu, 31 Dec 2018 23:55:55 GMT,表示該文件的過(guò)期時(shí)間是2018年12月31日晚上23點(diǎn)55分55秒,在這個(gè)時(shí)間之前瀏覽器都不會(huì)再次發(fā)出請(qǐng)求去獲取該文件。這是HTTP/1.0中的字段。

在Chrome開(kāi)發(fā)者工具的network標(biāo)簽頁(yè)里能看到:

如何分析HTTP 200 OK和HTTP 304 Not modified的由來(lái)

下面兩個(gè)字段是發(fā)起請(qǐng)求時(shí),服務(wù)器決定文件是否需要更新的字段。

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

如何分析HTTP 200 OK和HTTP 304 Not modified的由來(lái)

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

如何分析HTTP 200 OK和HTTP 304 Not modified的由來(lái)

服務(wù)器接收到請(qǐng)求后,會(huì)把文件的Last-Modified時(shí)間和這個(gè)時(shí)間對(duì)比,如果時(shí)間沒(méi)變,那么瀏覽器將返回304 Not Modified給瀏覽器:

如何分析HTTP 200 OK和HTTP 304 Not modified的由來(lái)

如果時(shí)間有變化,那么服務(wù)器會(huì)返回200 OK,并返回相應(yīng)的內(nèi)容給瀏覽器。

下圖第9行的get_header_field方法是服務(wù)器從瀏覽器發(fā)送過(guò)來(lái)的HTTP請(qǐng)求提取頭部字段If-Modified-Since的值。

如何分析HTTP 200 OK和HTTP 304 Not modified的由來(lái)

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

如何分析HTTP 200 OK和HTTP 304 Not modified的由來(lái)

下圖就是服務(wù)器設(shè)置304 Not Modified響應(yīng)的位置:

如何分析HTTP 200 OK和HTTP 304 Not modified的由來(lái)

上述就是小編為大家分享的如何分析HTTP 200 OK和HTTP 304 Not modified的由來(lái)了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI