前言
幾乎所有的服務(wù)器和代理都會(huì)記錄下它們所處理的HTTP事務(wù)摘要。比如:跟蹤使用情況,安全性,計(jì)費(fèi),錯(cuò)誤檢測,等等。
記錄內(nèi)容
大多數(shù)情況下,日志的記錄出于兩種原因:查找服務(wù)器或代理存在的問題(比如,哪些請(qǐng)求失敗了),或者是生成Web站點(diǎn)訪問方式的統(tǒng)計(jì)信息。統(tǒng)計(jì)數(shù)據(jù)對(duì)市場營銷,計(jì)費(fèi)和容量規(guī)劃(比如,決定是否需要增加服務(wù)器或帶寬)都非常有用。
通常,只記錄事務(wù)的基本信息就行了。通常會(huì)記錄下來的幾個(gè)字段示例為:
- HTTP 方法
- 客戶端和服務(wù)器的HTTP版本
- 所請(qǐng)求資源的URL
- 相應(yīng)的狀態(tài)碼
- 請(qǐng)求和響應(yīng)報(bào)文的尺寸(包含所有的實(shí)體主體部分)
- 事務(wù)開始的時(shí)間戳
- Referer 首部和 User-Agent 首部的值
HTTP方法和URL說明了請(qǐng)求試圖做些什么,比如,GET某個(gè)資源或POST某個(gè)訂單??梢杂肬RL來記錄Web站點(diǎn)上頁面的受歡迎程度。
版本字符串給出了與客戶端和服務(wù)器有關(guān)的一些提示,在客戶端和服務(wù)器之間出現(xiàn)的一些比較奇怪或非預(yù)期的交互動(dòng)作時(shí),它會(huì)非常有用。比如,如果請(qǐng)求的失敗率高于預(yù)期,那版本信息指向的可能是一個(gè)無法與服務(wù)器進(jìn)行交互的新版瀏覽器。
HTTP狀態(tài)碼說明了請(qǐng)求的執(zhí)行狀況:是否成功執(zhí)行,認(rèn)證請(qǐng)求是否失敗,資源是否找到等。
請(qǐng)求/響應(yīng)的大小和時(shí)間戳主要用于記賬;就是記錄流入,流出或流徑應(yīng)用程序的字節(jié)有多少。還可用時(shí)間戳將觀察到的問題與當(dāng)時(shí)發(fā)起的一些請(qǐng)求關(guān)聯(lián)起來。
命中率測量
原始服務(wù)器通常會(huì)出于計(jì)費(fèi)的目的保留詳細(xì)的日志記錄。內(nèi)容提供者需要知道URL的受訪頻率,廣告商需要知道廣告的出現(xiàn)頻率,網(wǎng)站作者需要知道所編寫內(nèi)容的受歡迎程度??蛻舳酥苯釉L問Web服務(wù)器時(shí),日志記錄可以很好的跟蹤這些信息。
但是,緩存服務(wù)器位于客戶端和服務(wù)器之間,用于防止服務(wù)器同時(shí)處理大量訪問請(qǐng)求(這正是緩存的目的)。緩存要處理很多HTTP請(qǐng)求,并在不訪問原始服務(wù)器的情況下滿足它們的請(qǐng)求,服務(wù)器中沒有客戶端訪問其內(nèi)容的記錄,導(dǎo)致日志文件中出現(xiàn)遺漏。
由于日志記錄會(huì)遺失,所以,內(nèi)容提供者會(huì)將其最重要的頁面進(jìn)行緩存清除。緩存清除是指內(nèi)容提供者有意將其某些內(nèi)容設(shè)置為無法緩存,這樣,所有對(duì)此內(nèi)容的請(qǐng)求都會(huì)被導(dǎo)向原始服務(wù)器。于是,原始服務(wù)器就可以記錄下訪問情況了。不使用緩存可能會(huì)生成更好的日志,但會(huì)減緩原始服務(wù)器和網(wǎng)絡(luò)的請(qǐng)求速度,并增加負(fù)荷。
由于代理緩存(及一些客戶端)都會(huì)保留自己的日志,所以如果服務(wù)器能夠訪問這些日志(或者至少有一種錯(cuò)略的方式可以判斷代理緩存會(huì)以怎樣的頻率提供其內(nèi)容),就可以避免使用緩存清除。命中率測量協(xié)議是對(duì)HTTP的一種擴(kuò)展,它為這個(gè)問題提供了一種解決方案。命中率測量協(xié)議要求緩存周期性的向原始服務(wù)器匯報(bào)緩存訪問的統(tǒng)計(jì)數(shù)據(jù)。
關(guān)于隱私的考慮
日志記錄實(shí)際上就是服務(wù)器和代理執(zhí)行的一項(xiàng)管理功能,所以整個(gè)操作系統(tǒng)對(duì)用戶來說都是透明的。通常,用戶甚至都不清楚他們的HTTP事務(wù)已被記錄,實(shí)際上,很多用戶可能甚至都不知道它們訪問Web上的內(nèi)容是在使用HTTP協(xié)議。
Web應(yīng)用程序的開發(fā)者和管理者要清楚跟蹤用戶的HTTP事務(wù)可能帶來的影響。他可以根據(jù)獲取的信息收集很多有關(guān)用戶的情況。很顯然,這些信息可以用于不良目的,歧視,騷然,勒索等。進(jìn)行日志記錄的Web服務(wù)器和代理一定要注意保護(hù)其終端用戶的隱私。