http304状态码缓存设置问题
如果只是用瀏覽器打開(kāi),那么瀏覽器會(huì)去判斷這個(gè)資源在緩存里有沒(méi)有,如果有的話,會(huì)去判斷max-age,看看過(guò)期沒(méi)有,如果沒(méi)有過(guò)期,則直接讀緩存,根本不會(huì)和服務(wù)器進(jìn)行交互,換句話說(shuō),斷網(wǎng)都能打開(kāi),就和本地跑一樣!如果已經(jīng)過(guò)期了,那就去服務(wù)器請(qǐng)求,等待服務(wù)器響應(yīng),這是很費(fèi)時(shí)間的,服務(wù)器如果發(fā)現(xiàn)資源沒(méi)有改變過(guò),那么就會(huì)返回304,告訴瀏覽器,我沒(méi)變過(guò),你去讀緩存吧,于是瀏覽器也不用從服務(wù)器拉數(shù)據(jù)了,然而,等待服務(wù)器響應(yīng)也是一個(gè)很要命的問(wèn)題,在網(wǎng)速發(fā)達(dá)的今天,等一個(gè)響應(yīng),有時(shí)比下載還慢。 如果是用瀏覽器刷新的,那么瀏覽器不會(huì)去判斷max-age了,直接去服務(wù)器拿,如果服務(wù)器判斷資源沒(méi)變過(guò),則還是會(huì)返回304,和上面是一樣的,所以刷新一下,其實(shí)很可怕,等于把所有的資源都要去服務(wù)器請(qǐng)求一邊,問(wèn)問(wèn)服務(wù)器我過(guò)期了沒(méi)有。
綜上,盡量減少網(wǎng)頁(yè)的資源數(shù)量!盡量合并JS CSS 圖片!響應(yīng)速度將會(huì)猛增!
3xx?(重定向)?
要完成請(qǐng)求,需要進(jìn)一步操作。通常,這些狀態(tài)碼用來(lái)重定向。Google 建議您在每次請(qǐng)求中使用重定向不要超過(guò) 5 次。您可以使用網(wǎng)站管理員工具查看一下 Googlebot 在抓取重定向網(wǎng)頁(yè)時(shí)是否遇到問(wèn)題。診斷下的網(wǎng)絡(luò)抓取頁(yè)列出了由于重定向錯(cuò)誤導(dǎo)致 Googlebot 無(wú)法抓取的網(wǎng)址。
| 300(多種選擇) | 針對(duì)請(qǐng)求,服務(wù)器可執(zhí)行多種操作。服務(wù)器可根據(jù)請(qǐng)求者 (user agent) 選擇一項(xiàng)操作,或提供操作列表供請(qǐng)求者選擇。 |
| 301(永久移動(dòng)) | 請(qǐng)求的網(wǎng)頁(yè)已永久移動(dòng)到新位置。服務(wù)器返回此響應(yīng)(對(duì) GET 或 HEAD 請(qǐng)求的響應(yīng))時(shí),會(huì)自動(dòng)將請(qǐng)求者轉(zhuǎn)到新位置。您應(yīng)使用此代碼告訴 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已永久移動(dòng)到新位置。 |
| 302(臨時(shí)移動(dòng)) | 服務(wù)器目前從不同位置的網(wǎng)頁(yè)響應(yīng)請(qǐng)求,但請(qǐng)求者應(yīng)繼續(xù)使用原有位置來(lái)響應(yīng)以后的請(qǐng)求。此代碼與響應(yīng) GET 和 HEAD 請(qǐng)求的 301 代碼類似,會(huì)自動(dòng)將請(qǐng)求者轉(zhuǎn)到不同的位置,但您不應(yīng)使用此代碼來(lái)告訴 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已經(jīng)移動(dòng),因?yàn)?Googlebot 會(huì)繼續(xù)抓取原有位置并編制索引。 |
| 303(查看其他位置) | 請(qǐng)求者應(yīng)當(dāng)對(duì)不同的位置使用單獨(dú)的 GET 請(qǐng)求來(lái)檢索響應(yīng)時(shí),服務(wù)器返回此代碼。對(duì)于除 HEAD 之外的所有請(qǐng)求,服務(wù)器會(huì)自動(dòng)轉(zhuǎn)到其他位置。 |
| 304(未修改) | 自從上次請(qǐng)求后,請(qǐng)求的網(wǎng)頁(yè)未修改過(guò)。服務(wù)器返回此響應(yīng)時(shí),不會(huì)返回網(wǎng)頁(yè)內(nèi)容。 如果網(wǎng)頁(yè)自請(qǐng)求者上次請(qǐng)求后再也沒(méi)有更改過(guò),您應(yīng)將服務(wù)器配置為返回此響應(yīng)(稱為 If-Modified-Since HTTP 標(biāo)頭)。服務(wù)器可以告訴 Googlebot 自從上次抓取后網(wǎng)頁(yè)沒(méi)有變更,進(jìn)而節(jié)省帶寬和開(kāi)銷。 . |
| 305(使用代理) | 請(qǐng)求者只能使用代理訪問(wèn)請(qǐng)求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應(yīng),還表示請(qǐng)求者應(yīng)使用代理。 |
| 307(臨時(shí)重定向) | 服務(wù)器目前從不同位置的網(wǎng)頁(yè)響應(yīng)請(qǐng)求,但請(qǐng)求者應(yīng)繼續(xù)使用原有位置來(lái)響應(yīng)以后的請(qǐng)求。此代碼與響應(yīng) GET 和 HEAD 請(qǐng)求的 <a href=answer.py?answer=>301</a> 代碼類似,會(huì)自動(dòng)將請(qǐng)求者轉(zhuǎn)到不同的位置,但您不應(yīng)使用此代碼來(lái)告訴 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已經(jīng)移動(dòng),因?yàn)?Googlebot 會(huì)繼續(xù)抓取原有位置并編制索引。 |
?? 先嘗試max-age。其作用是:假如請(qǐng)求了服務(wù)器并在a時(shí)刻返回響應(yīng)結(jié)果,則在max-age規(guī)定的秒數(shù)內(nèi),瀏覽器將不會(huì)發(fā)送對(duì)應(yīng)的請(qǐng)求到服務(wù)器,數(shù)據(jù)由緩存直接返回;超過(guò)這一時(shí)間段才進(jìn)一步由服務(wù)器決定是返回新數(shù)據(jù)還是仍由緩存提供。?
?? 設(shè)置max-age的方式是tomcat的filter。?
Java代碼??
web.xml,只針對(duì)js和css文件進(jìn)行設(shè)置。?
Xml代碼??
httpTest.jsp?
Html代碼??
在瀏覽器內(nèi)輸入httpTest.jsp,則抓取的請(qǐng)求/響應(yīng)信息如下:?
Java代碼??
jquery-1.3.2.min.js的max-age被設(shè)置為30秒。即30秒內(nèi),無(wú)論用戶在瀏覽器地址欄上敲多少次回車,后臺(tái)也不應(yīng)該打印日志,而我這個(gè)信息抓取工具也不應(yīng)該抓取到任何信息。事實(shí)的確如此。注意,不同的操作方式影響最終結(jié)果,原因是刷新和強(qiáng)制刷新會(huì)額外發(fā)送cache-control信息。?
f5或刷新按鈕:cache-control:max-age=0?
ctrl+f5:cache-control:no-cache?
??????? pragma:no-cache?
疑難雜癥:?
1、為什么把緩存清干凈并訪問(wèn)頁(yè)面后,再次通過(guò)按回車訪問(wèn)頁(yè)面時(shí),瀏覽器卻不再發(fā)送請(qǐng)求了,而按f5又可以??
?? 答:觀察響應(yīng)信息可知,把緩存清干凈后cache-control的設(shè)置消失了,原因不明。如果按回車,則此時(shí)緩存永遠(yuǎn)都起作用,自然不用訪問(wèn)服務(wù)器;而按f5則是強(qiáng)制訪問(wèn),且此時(shí)cache-control的設(shè)置又能出現(xiàn),所以之后所有的訪問(wèn)都遵循cache-control的設(shè)置。
轉(zhuǎn)載于:https://www.cnblogs.com/panxuejun/p/5842069.html
總結(jié)
以上是生活随笔為你收集整理的http304状态码缓存设置问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 又一款代替PanDownload的百度网
- 下一篇: ad18添加许可证无反应怎么回事