如何做網(wǎng)站規(guī)劃谷歌推廣運營
之前在開發(fā)中,有些后端服務(wù)處理非常慢,頁面可能會出現(xiàn)504 Gateway time-out的提示,或者服務(wù)器還沒返回數(shù)據(jù),瀏覽器就關(guān)掉了。我們只是看到了瀏覽器關(guān)掉,但是服務(wù)器和客戶端的狀態(tài)都是什么樣的呢?
問題
在瀏覽器上發(fā)送http請求到服務(wù)器 2. 服務(wù)器接受導(dǎo)請求開始處理數(shù)據(jù) 3. 在服務(wù)器返回結(jié)果前關(guān)閉了瀏覽器,那么服務(wù)器的數(shù)據(jù)還會繼續(xù)返回么?客戶端會是什么狀態(tài)?
分析
當在瀏覽器上發(fā)送HTTP請求到服務(wù)器,并在服務(wù)器返回結(jié)果前關(guān)閉了瀏覽器,會發(fā)生以下情況:
1. 瀏覽器發(fā)送HTTP請求到服務(wù)器
當你在瀏覽器上點擊某個鏈接或提交一個表單時,瀏覽器會通過HTTP協(xié)議發(fā)送一個請求到服務(wù)器。這個請求會建立一個TCP連接,并發(fā)送一個HTTP請求報文。
2. 服務(wù)器接受請求并開始處理數(shù)據(jù)
服務(wù)器接收到來自瀏覽器的HTTP請求后,開始處理請求中的數(shù)據(jù)。這可能包括查詢數(shù)據(jù)庫、執(zhí)行業(yè)務(wù)邏輯等步驟。
3. 在服務(wù)器返回結(jié)果前關(guān)閉了瀏覽器
假設(shè)在服務(wù)器還沒有完全返回結(jié)果之前,你關(guān)閉了瀏覽器。這時會發(fā)生以下變化:
服務(wù)器端
- 服務(wù)器繼續(xù)處理請求:
- 服務(wù)器在檢測到客戶端斷開連接之前,會繼續(xù)處理請求。這包括執(zhí)行任何相關(guān)的業(yè)務(wù)邏輯或數(shù)據(jù)庫操作。
- 服務(wù)器檢測到斷開連接:
- 一旦服務(wù)器嘗試向客戶端發(fā)送響應(yīng)數(shù)據(jù)時發(fā)現(xiàn)連接已經(jīng)被斷開,它通常會收到一個網(wǎng)絡(luò)錯誤(如ConnectionReset異常),表明客戶端已經(jīng)關(guān)閉了連接。
- 服務(wù)器的響應(yīng):
- 服務(wù)器會停止嘗試發(fā)送響應(yīng)數(shù)據(jù),并關(guān)閉連接。對于某些服務(wù)器實現(xiàn),如果響應(yīng)已經(jīng)準備好但未能發(fā)送,可能會記錄錯誤日志。
客戶端(瀏覽器)
- 瀏覽器檢測到斷開連接:
- 瀏覽器會檢測到連接被中斷,并顯示錯誤消息。通常情況下,瀏覽器會顯示類似于“此頁面無法加載”或“請求超時”的提示。
- 瀏覽器的狀態(tài):
- 瀏覽器不會接收到服務(wù)器的響應(yīng)數(shù)據(jù)。由于瀏覽器已經(jīng)被關(guān)閉,它無法接收任何進一步的信息或響應(yīng)。
具體案例分析
使用HTTP/1.1協(xié)議
- 瀏覽器斷開連接:
- 瀏覽器關(guān)閉后,TCP連接會被中斷。
- 服務(wù)器檢測到斷開連接:
- 服務(wù)器嘗試發(fā)送響應(yīng)數(shù)據(jù)時會收到網(wǎng)絡(luò)錯誤,例如ConnectionReset異常。
- 服務(wù)器的響應(yīng):
- 服務(wù)器通常會記錄錯誤日志,并關(guān)閉連接。
使用HTTP/2協(xié)議
- 瀏覽器斷開連接:
- 如果瀏覽器關(guān)閉,HTTP/2協(xié)議中的流(stream)也會被中斷。
- 服務(wù)器檢測到斷開連接:
- 服務(wù)器在嘗試通過流發(fā)送響應(yīng)數(shù)據(jù)時會檢測到流被中斷。
- 服務(wù)器的響應(yīng):
- 服務(wù)器會停止發(fā)送響應(yīng)數(shù)據(jù),并可能關(guān)閉流或整個連接。
客戶端的狀態(tài)
- 瀏覽器檢測到斷開連接:
- 瀏覽器會檢測到連接被中斷,并顯示錯誤消息。
- 瀏覽器的顯示:
- 用戶界面通常會顯示一個錯誤頁面或消息,表明請求無法完成或頁面加載失敗。
總結(jié)
當瀏覽器在服務(wù)器返回結(jié)果前關(guān)閉時,服務(wù)器通常會繼續(xù)處理請求,直到它嘗試發(fā)送響應(yīng)數(shù)據(jù)時發(fā)現(xiàn)連接已被斷開。這時,服務(wù)器會記錄錯誤并關(guān)閉連接。瀏覽器會檢測到連接中斷,并顯示相應(yīng)的錯誤消息。具體的行為取決于使用的HTTP版本(HTTP/1.1 vs HTTP/2)以及服務(wù)器和瀏覽器的具體實現(xiàn)。