博客轉載:http://baike.baidu.com/link?url=jhw62dpK66WD7EQFKWEhVQs_jPeFKIUegnA6
如果客戶端發送了一個帶條件的GET 請求且該請求已被允許,而文檔的內容(自上次訪問以來或者根據請求的條件)並沒有改變,則服務器應當返回這個304狀態碼。簡單的表達就是:客戶端已經執行了GET,但文件未變化。
什么情況下會返回304狀態碼?
客戶端是怎么知道這些內容沒有更新的呢?其實這並不是客戶端的事情,而是你服務器的事情,大家都知道服務器可以設置緩存機制,這個功能是為了提高網站的訪問速度,當你發出一個GET請求的時候服務器會從緩存中調用你要訪問的內容,這個時候服務器就可以判斷這個頁面是不是更新過了,如果沒有更新過那么他會給你返回一個304狀態碼。
1.如何從網站日志中分析304狀態碼
例如某網站日志中有以下這樣的一段:
2011-12-18 23:45:33 W3SVC7499849XX 61.145.116.XX GET /asyj/1112_5544.html - 80 - 123.125.71.78 Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://***.baidu.coX/search/spider.html[1] ) 304 0 0
其實這段文字是這樣理解的。
2011-12-18 23:45:33 ——代表訪問的日期和時間。
W3SVC7499849XX ——代表虛擬主機的名稱
61.145.116.XX ——代表訪問ip
GET ——代表訪問的方法
/asyj/1112_5544.html——代表具體訪問的文件
80 ——代表訪問的端口
123.125.71.78 ——代表來源ip
Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://***.baidu.coX/search/spider.html) ——代表訪問來源;這里是代表百度蜘蛛。注*換為w
304 ——304返回碼。這個也是這里介紹的重點。這里表示客戶端已經執行了GET,但文件未變化
前一個0 ——代表服務端傳送到客戶端的字節大小
后一個0 ——代表客戶端傳送到服務端的字節大小
從這一段日志。我們可以看出這次百度蜘蛛訪問的結果的返回了一個304狀態碼。那么搜索引擎就不會對我們的頁面進行再次抓取了
2.304狀態碼的意義所在?
一個網站被搜索引擎抓取的次數以及頻率越多那么他是越有利於排名的,但是如果你的網站出現太多的304,那么一定會降低搜索引擎的抓取頻率以及次數,從而讓自己的網站排名比別人落一步