我們在瀏覽器地址欄輸入地址回車以后:
瀏覽器發(fā)送 Http請求 到服務器.
服務器上有一個叫做 Web容器 (提供Http服務)的應用程序, 用來接這個請求, 這個 Web容器通常是 Nginx (或者Apache IIS).
如果請求的是一個靜態(tài)的資源(就是服務器上直接存在的文件), 一般Web容器就可以直接讀取文件內(nèi)容, 然后響應給瀏覽器了.
如果請求的數(shù)據(jù)是要動態(tài)計算的, 這時候就需要在服務器進行編程來實現(xiàn). 具體如何實現(xiàn)呢?
我們讓Nginx把請求轉(zhuǎn)發(fā)給用某種語言寫的應用程序, 讓這個程序去做具體業(yè)務的處理. 這個程序用的語言就是 PHP (當然也可以是JAVA .NET)
PHP接到請求后, 就開始運行我們編寫的PHP程序啦. 處理過程中時候, 可能需要還讀取一些數(shù)據(jù). 這些數(shù)據(jù)存放的地方就是 MySQL (也可以是其他數(shù)據(jù)庫啦). 存儲方面還有 Redis / MongoDB 等等, 這個之后用到再說吧.
處理完以后, PHP把結(jié)果(可能是某個動態(tài)生成的網(wǎng)頁)給到Nginx, Nginx再響應回去, 給到瀏覽器. 這個 Http響應 的響應體(body)里, 放的就是個 HTML 頁面. (HTML暫且先理解成一個記事本寫的內(nèi)容, 不同的是里面支持各種語法, 通過語法顯示出比記事本更豐富的效果)
瀏覽器會解析這個HTML做渲染, 解析的同時, 發(fā)現(xiàn) HTML 里可能有含很多的外鏈資源鏈接, 于是他一邊解析一邊發(fā)送對于這些資源的請求. 這些資源可能是 圖片 / JS (Javascript) / CSS (層疊樣式表) 等.
CSS我們理解他是網(wǎng)頁的皮膚.
JS是運行在瀏覽器里的編程語言, JS一旦被請求回來了, 瀏覽器就會執(zhí)行他. 他可以控制網(wǎng)頁里的各個元素, 還可以自己去發(fā)Http請求, 讓網(wǎng)頁具有各種功能.