久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

HTTP 304狀態(tài)分析

 隱者黑鷹88 2016-11-06
HTTP 304: Not Modified
標(biāo)準(zhǔn)解釋是:Not Modified 客戶端有緩沖的文檔并發(fā)出了一個(gè)條件性的請(qǐng)求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務(wù)器告訴客戶,,原來緩沖的文檔還可以繼續(xù)使用,。

我們先來看下瀏覽器的工作原理:
(1)直接在緩存中去獲取內(nèi)容。如果先前有效訪問的響應(yīng)頭包含 Expires, max-age的話,,“打開新窗口”,、“輸入U(xiǎn)RI回車”、“前一頁”,、“后一頁”這些瀏覽器行為不會(huì)使瀏覽器在Expires, max-age設(shè)置的有效期時(shí)間內(nèi)去訪問服務(wù)器,,而是在緩存中去獲取內(nèi)容,但是"刷新'"或"重載"例外,。
(2)訪問服務(wù)器,,根據(jù)服務(wù)器響應(yīng)來獲取內(nèi)容。這種情況發(fā)生在設(shè)置no-cache等頭標(biāo)要求不緩存,,或者是設(shè)置了 Expires,max-age但瀏覽器行為是“刷新”或“重載”時(shí)候,。'Last-Modified'、'ETag',、'must-revalidate' 等有些特殊,,不直接受瀏覽器行為影響,它們必須訪問服務(wù)器后,,再由服務(wù)器判斷是直接發(fā)送新的資源,,還是發(fā)送一個(gè)304 Not Modfied讓瀏覽器使用緩存中的資源。

如果客戶端在請(qǐng)求一個(gè)文件的時(shí)候,,發(fā)現(xiàn)自己緩存的文件有 Last Modified ,,那么在請(qǐng)求中會(huì)包含 If Modified Since ,這個(gè)時(shí)間就是緩存文件的 Last Modified ,。因此,,如果請(qǐng)求中包含 If Modified Since,就說明已經(jīng)有緩存在客戶端,。只要判斷這個(gè)時(shí)間和當(dāng)前請(qǐng)求的文件的修改時(shí)間就可以確定是返回 304 還是 200 ,。對(duì)于靜態(tài)文件,例如:CSS,、圖片,,服務(wù)器會(huì)自動(dòng)完成 Last Modified 和 If Modified Since 的比較,完成緩存或者更新,。但是對(duì)于動(dòng)態(tài)頁面,,就是動(dòng)態(tài)產(chǎn)生的頁面,往往沒有包含 Last Modified 信息,,這樣瀏覽器,、網(wǎng)關(guān)等都不會(huì)做緩存,,也就是在每次請(qǐng)求的時(shí)候都完成一個(gè) 200 的請(qǐng)求。
因此,,對(duì)于動(dòng)態(tài)頁面做緩存加速,,首先要在 Response 的 HTTP Header 中增加 Last Modified 定義,其次根據(jù) Request 中的 If Modified Since 和被請(qǐng)求內(nèi)容的更新時(shí)間來返回 200 或者 304 ,。雖然在返回 304 的時(shí)候已經(jīng)做了一次數(shù)據(jù)庫查詢,,但是可以避免接下來更多的數(shù)據(jù)庫查詢,并且沒有返回頁面內(nèi)容而只是一個(gè) HTTP Header,,從而大大的降低帶寬的消耗,,對(duì)于用戶的感覺也是提高。

如何測(cè)試HTTP狀態(tài),,緩存是否有效,?

可以使用HttpWatch
第一次訪問 200
鼠標(biāo)點(diǎn)擊二次訪問 (Cache)
按F5刷新 304
按Ctrl+F5強(qiáng)制刷新 200
如果是這樣的就說明緩存真正有效了。

對(duì) HTTP 304 的理解

最近和同事一起看Web的Cache問題,,又進(jìn)一步理解了 HTTP 中的 304 又有了一些了解,。
304 的標(biāo)準(zhǔn)解釋是:Not Modified 客戶端有緩沖的文檔并發(fā)出了一個(gè)條件性的請(qǐng)求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務(wù)器告訴客戶,,原來緩沖的文檔還可以繼續(xù)使用,。
如 果客戶端在請(qǐng)求一個(gè)文件的時(shí)候,發(fā)現(xiàn)自己緩存的文件有 Last Modified ,,那么在請(qǐng)求中會(huì)包含 If Modified Since ,,這個(gè)時(shí)間就是緩存文件的 Last Modified 。因此,,如果請(qǐng)求中包含 If Modified Since,,就說明已經(jīng)有緩存在客戶端。只要判斷這個(gè)時(shí)間和當(dāng)前請(qǐng)求的文件的修改時(shí)間就可以確定是返回 304 還是 200 ,。對(duì)于靜態(tài)文件,例如:CSS,、圖片,,服務(wù)器會(huì)自動(dòng)完成 Last Modified 和 If Modified Since 的比較,完成緩存或者更新,。但是對(duì)于動(dòng)態(tài)頁面,,就是動(dòng)態(tài)產(chǎn)生的頁面,往往沒有包含 Last Modified 信息,,這樣瀏覽器,、網(wǎng)關(guān)等都不會(huì)做緩存,也就是在每次請(qǐng)求的時(shí)候都完成一個(gè) 200 的請(qǐng)求,。
因此,,對(duì)于動(dòng)態(tài)頁面做緩存加速,,首先要在 Response 的 HTTP Header 中增加 Last Modified 定義,其次根據(jù) Request 中的 If Modified Since 和被請(qǐng)求內(nèi)容的更新時(shí)間來返回 200 或者 304 ,。雖然在返回 304 的時(shí)候已經(jīng)做了一次數(shù)據(jù)庫查詢,,但是可以避免接下來更多的數(shù)據(jù)庫查詢,并且沒有返回頁面內(nèi)容而只是一個(gè) HTTP Header,,從而大大的降低帶寬的消耗,,對(duì)于用戶的感覺也是提高。
當(dāng)這些緩存有效的時(shí)候,,通過 HttpWatch 查看一個(gè)請(qǐng)求會(huì)得到這樣的結(jié)果:

第一次訪問 200
鼠標(biāo)點(diǎn)擊二次訪問 (Cache)
按F5刷新 304
按Ctrl+F5強(qiáng)制刷新 200
如果是這樣的就說明緩存真正有效了,。以上就是我對(duì) HTTP 304 的一個(gè)理解。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多