论“响应时间”
今天收到一個讀者的來信,對于我在書中提到的“響應(yīng)時間”有一些疑問,以下是他的郵件中提到的問題:
1,“系統(tǒng)響應(yīng)時間”如何定義?是指“客戶端接收到響應(yīng)所消耗的時間”還是“接收到最后一個字節(jié)數(shù)據(jù)所消耗的時間。。。。”?2,書中提到“可以使用技巧在數(shù)據(jù)尚未接收完成時進(jìn)行呈現(xiàn)來減少用戶感受到的響應(yīng)時間”,這一句話是什么意思?
先回答第一個問題,我在書中找到了原文:
而“系統(tǒng)響應(yīng)時間”指應(yīng)用系統(tǒng)從請求發(fā)出開始到客戶端接收到數(shù)據(jù)所消耗的時間。這里確實有不明確的地方,更確切的說法應(yīng)該是:而“系統(tǒng)響應(yīng)時間”指應(yīng)用系統(tǒng)從請求發(fā)出開始到客戶端接收到所有數(shù)據(jù)所消耗的時間。
這樣,“系統(tǒng)響應(yīng)時間”加上“呈現(xiàn)時間”,才是完整的用戶感受到的響應(yīng)時間。
對于第二個問題,倒是有些可以討論的內(nèi)容:
我們在定義響應(yīng)時間的時候,是從應(yīng)用的使用者/客戶的角度出發(fā)的。從這個角度出發(fā),響應(yīng)時間被定義成“對請求做出響應(yīng)所需要的時間”。我們以一個web應(yīng)用為例,假設(shè)web應(yīng)用有一個“提交用戶留言”的功能,考察這個功能的響應(yīng)時間,就應(yīng)該是“從用戶填寫完留言,點擊提交按鈕開始,到頁面刷新完成,用戶看到完整的返回頁面為止”所消耗的所有時間——這個定義非常完整,但若從用戶的實際感受來看的話,這里還是有一點模糊的地方。
我們可以把上文提到的交互過程細(xì)化一下:
用戶點擊“提交”按鈕-》請求被發(fā)送到服務(wù)器-》服務(wù)器處理-》服務(wù)器返回頁面-》瀏覽器接收服務(wù)器的返回并render頁面
模糊之處在于最后一個環(huán)節(jié):“瀏覽器接收服務(wù)器的返回并render頁面”,如果我們堅定的認(rèn)為“只有當(dāng)頁面完整的顯示完成,才是響應(yīng)時間的結(jié)束”,這不會是一個問題。但實際上,對大多數(shù)用戶來說,看到頁面上開始顯示數(shù)據(jù)或是圖片,用戶就會認(rèn)為“我已經(jīng)得到了響應(yīng)”,從這個角度來說,用戶感受到的響應(yīng)時間實際上是“從請求發(fā)出開始,到用戶看到頁面開始呈現(xiàn)出的內(nèi)容結(jié)束”所需要的時間。
那為什么我們不采用“從請求發(fā)出開始,到用戶看到頁面開始呈現(xiàn)出的內(nèi)容結(jié)束”這樣一個定義方式呢?關(guān)鍵在于這里涉及到用戶的認(rèn)知行為,帶有主觀色彩,不完全是客觀的標(biāo)準(zhǔn),因此不適合作為一個需要被度量的性能指標(biāo)。另一方面,不同的瀏覽器有不同的行為(例如parse的方式和render的方式),如果需要把這些瀏覽器本身的行為都考慮到性能測試中的話,我們很難為所有的系統(tǒng)建立統(tǒng)一的測試模型——實際上,現(xiàn)在的主流性能測試工具(例如JMeter,LoadRunner,Webload等)都完全不考慮客戶端的呈現(xiàn)過程。
轉(zhuǎn)載于:https://www.cnblogs.com/guanhe/archive/2008/04/23/1167828.html
總結(jié)
- 上一篇: Alexa 调整网站排名统计方式
- 下一篇: 状态模式简单实现