前言

為什么要寫一個(gè)專欄來(lái)總結(jié)《從一個(gè)瀏覽器的請(qǐng)求到響應(yīng)的過(guò)程,來(lái)總結(jié)這一二年我遇到的“鬼”知識(shí)點(diǎn)》這么龐大的知識(shí)點(diǎn)呢?

寫這些東西絕不是為了吹噓自己懂了什么或者是自己發(fā)現(xiàn)了什么,這,只是一個(gè)記錄,比如后面RESTful介紹,我就可以直接引用阮一峰大佬總結(jié)好的最佳實(shí)踐,別人的輪子已經(jīng)造的挺好了,我為什么還要重復(fù)

起因還是因?yàn)槟炒蚊嬖嚨臅r(shí)候,面試官讓我盡可能詳細(xì)地描述一下“一個(gè)請(qǐng)求到結(jié)束的全過(guò)程”,當(dāng)時(shí)掌握的知識(shí)點(diǎn)水平有限,我就簡(jiǎn)短地回答了一下面試官,但是今天又想起這道面試題,才忽然發(fā)現(xiàn)自己的回答太過(guò)于籠統(tǒng),可能當(dāng)時(shí)面試官想針對(duì)每個(gè)知識(shí)點(diǎn)考察一下,所以才有這個(gè)系列的由來(lái),日后會(huì)慢慢補(bǔ)充,希望各位都能有所收獲

一下是我當(dāng)年的回答,現(xiàn)在看看還真是避重就輕23333:


當(dāng)時(shí)回答的概要1.0

1、用戶從客戶端發(fā)起請(qǐng)求(流程1),客戶端首先判斷本地緩存(流程2),如果命中緩存則直接響應(yīng)給用戶(流程3),請(qǐng)求結(jié)束


本地緩存

2、未命中緩存,通過(guò)http訪問(wèn)服務(wù)器(流程4),一般都會(huì)做負(fù)載均衡輪訓(xùn)到某一臺(tái)業(yè)務(wù)服務(wù)器(流程5)

3、nginx會(huì)判斷該請(qǐng)求是否緩存,如果命中緩存,或者前端請(qǐng)求的靜態(tài)資源圖片/css/js等文件, 則返回客戶端(流程7)


服務(wù)器緩存

4、動(dòng)態(tài)資源nginx通過(guò)fastcgi發(fā)送給php-fpm進(jìn)行解析(流程8、9)

5、根據(jù)不同的業(yè)務(wù)需求,php直接或通過(guò)redis/memcached獲取數(shù)據(jù)進(jìn)行業(yè)務(wù)處理(流程10-15),然后返回給nginx(流程16)組裝響應(yīng)報(bào)文,發(fā)送給客戶端


現(xiàn)在回想起來(lái),這個(gè)回答真的只能0分滾粗,很明顯的入門級(jí)水準(zhǔn),我想當(dāng)年考官也不是想聽(tīng)這些,正因?yàn)槿绱?,我才想填補(bǔ)一下以前的遺憾,把這套知識(shí)體系慢慢補(bǔ)全

按照我現(xiàn)在的理解,當(dāng)年的面試官有可能想從這一個(gè)問(wèn)題中獲取如下的知識(shí)點(diǎn):

(流程4)http協(xié)議的三次握手與四次揮手,tcp/ip模型是什么,RESTful編程風(fēng)格

(流程5)select、poll和epoll的實(shí)現(xiàn)機(jī)制與區(qū)別

(流程8)fastcgi接口是什么

(流程10)緩存設(shè)計(jì)方案相關(guān):緩存穿透、緩存雪崩、緩存重建等

(流程12-15)mysql設(shè)計(jì)、索引等

以我現(xiàn)在的水平我就只能暫時(shí)理解成想考我這些知識(shí)點(diǎn)嘍,其他的日后再繼續(xù)補(bǔ)充


那么我之后的文章將從三部分開(kāi)始寫起

1、客戶端處理

2、網(wǎng)絡(luò)傳輸

3、服務(wù)端處理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 《老男孩Linux運(yùn)維》筆記 隱藏Nginx軟件版本號(hào) 一般來(lái)說(shuō),軟件的漏洞都和版本有關(guān)。因此要盡量隱藏對(duì)訪問(wèn)用戶...
    Zhang21閱讀 3,899評(píng)論 0 28
  • 談?wù)揥EB編程的時(shí)候常說(shuō)天天在寫CGI,那么CGI是什么呢?可能很多時(shí)候并不會(huì)去深究這些基礎(chǔ)概念,再比如除了CGI...
    __七把刀__閱讀 2,310評(píng)論 2 11
  • Nginx簡(jiǎn)介 解決基于進(jìn)程模型產(chǎn)生的C10K問(wèn)題,請(qǐng)求時(shí)即使無(wú)狀態(tài)連接如web服務(wù)都無(wú)法達(dá)到并發(fā)響應(yīng)量級(jí)一萬(wàn)的現(xiàn)...
    魏鎮(zhèn)坪閱讀 2,221評(píng)論 0 9
  • 0 系列目錄# WEB請(qǐng)求處理 WEB請(qǐng)求處理一:瀏覽器請(qǐng)求發(fā)起處理 WEB請(qǐng)求處理二:Nginx請(qǐng)求反向代理 本...
    七寸知架構(gòu)閱讀 14,246評(píng)論 22 189
  • 我曾經(jīng)問(wèn)自己,遠(yuǎn)方到底有多遠(yuǎn)?這一生,你到底要走多遠(yuǎn)? 在走過(guò)無(wú)數(shù)次的遠(yuǎn)方之后,在某一刻,我得到了答案。 這一生,...
    牧野清風(fēng)閱讀 2,955評(píng)論 8 24

友情鏈接更多精彩內(nèi)容