從輸入U(xiǎn)RL地址到看到頁(yè)面,中間都經(jīng)歷了什么.

image.png

1.第一步url解析

  • 地址解析(http默認(rèn)端口號(hào):80,https默認(rèn)端口號(hào):443显蝌,F(xiàn)TP默認(rèn)端口號(hào):21末购,一個(gè)服務(wù)器可以存放多個(gè)項(xiàng)目破喻,服務(wù)器根據(jù)端口號(hào)查找對(duì)應(yīng)的項(xiàng)目服務(wù).返回給客戶端)


    image.png
  • url編碼(防止中文、或者地址出現(xiàn)亂碼盟榴,可以進(jìn)行字符編碼曹质,服務(wù)器解碼).
//對(duì)整個(gè)URL編碼:處理空格,中文字符可以,參數(shù)為url無(wú)效
encodeURL/decodeURL
//對(duì)傳遞的參數(shù)信息來編碼,空格特殊字符都可以轉(zhuǎn)碼
encodeURLComponent/decodeURLComponent
  • URI/URL/URN的區(qū)別

2.第二步瀏覽器查找當(dāng)前url是否存在緩存擎场,并比較緩存是否過期羽德。緩存檢查

1.兩種情況
1-1.沒有設(shè)置緩存,本地也沒有緩存迅办,需要向服務(wù)器進(jìn)行請(qǐng)求.
1-2.本地設(shè)置緩存宅静,去查看緩存是否過期,沒有過期站欺,向本地緩存讀取.

*緩存有兩種:強(qiáng)緩存姨夹、協(xié)商緩存.
先檢查是否存在強(qiáng)緩存

  • 有,且未失效矾策,走強(qiáng)緩存.

  • 如果沒有磷账,或者失效,檢查是否存在協(xié)商緩存.

  • 如果協(xié)商緩存有贾虽,直接拿協(xié)商緩存的數(shù)據(jù)

  • 如果協(xié)商緩存沒有逃糟,直接正常請(qǐng)求向服務(wù)器請(qǐng)求最新數(shù)據(jù).

  • 緩存位置(緩存是后臺(tái)配置,瀏覽器幫助實(shí)現(xiàn),前端不需要寫代碼)
    1.Memary Cache :內(nèi)存緩存.相當(dāng)于內(nèi)存條(緩存的存放位置)特點(diǎn):瀏覽器關(guān)閉緩存清除.
    2.Disk Cache:硬盤緩存.特點(diǎn)瀏覽器關(guān)閉绰咽,再打開依然可以讀取到緩存.

打開網(wǎng)頁(yè):查找硬盤緩存是否有匹配菇肃,如果有則使用,沒有則發(fā)送網(wǎng)絡(luò)請(qǐng)求,
普通刷新:因tab沒有關(guān)閉取募,此時(shí)內(nèi)存緩存是可用的琐谤,會(huì)被優(yōu)先使用。如果沒有才是硬盤緩存.
強(qiáng)制刷新:瀏覽器不使用緩存哪怕本地有緩存也不管矛辕,因此發(fā)送的請(qǐng)求頭部均帶有Cache-control:no-cache,服務(wù)器直接返回200和最新內(nèi)容.

頁(yè)面第一次打開->內(nèi)存緩存(Memary-Cache)->頁(yè)面關(guān)閉->強(qiáng)制給硬盤緩存存放一份->頁(yè)面再次打開->會(huì)從硬盤緩存(Disk-Cache)直接讀取內(nèi)容返回?zé)o需請(qǐng)求.

1.強(qiáng)緩存(html頁(yè)面一般不做強(qiáng)緩存笑跛,返回的狀態(tài)碼:200(from memory cache))

  • http1.0用expires用來設(shè)定緩存過期時(shí)間付魔,用來指定資源到期時(shí)間.
  • http1.1用的是Cache-Control(max-age=2592000,第一次拿到資源后的30天內(nèi)聊品,再次發(fā)送請(qǐng)求,讀取緩存中的信息.)
  • 兩者同時(shí)存在的話 Cache-Control優(yōu)先級(jí)大于expries

強(qiáng)緩存原理:

  • 強(qiáng)緩存的問題
    如果服務(wù)器文件更新了几苍,但是本地還是有強(qiáng)緩存翻屈,拿不到最新的信息.
    解決方案:
    1.html頁(yè)面一般不做強(qiáng)緩存.
    2.webpack的hash值.服務(wù)器更新資源后讓資源名稱和之前不一樣.這樣頁(yè)面導(dǎo)入全新資源.
    舊:index.xxxxx.js(緩存)
    新:index.cdcdc.js (未緩存從服務(wù)器讀取最新的.)
    3.當(dāng)文件更新后,在html導(dǎo)入的時(shí)候妻坝,設(shè)置一個(gè)后綴名伸眶,后綴可以設(shè)置一個(gè)時(shí)間戳.
    <script :src="xxxx.js?時(shí)間戳">
    4.協(xié)商緩存也可以解決.

2.協(xié)商緩存(強(qiáng)緩存沒有,或者失效后刽宪,不管你有沒有緩存厘贼,瀏覽器都會(huì)攜帶緩存標(biāo)識(shí),向服務(wù)器端發(fā)送請(qǐng)求)圣拄。

  • http1.0 Last-Modified(記錄當(dāng)前資源最后更新時(shí)間)
  • http1.1 ETag(記錄標(biāo)識(shí))
  • Last-Nodified/ETag協(xié)商緩存就是在強(qiáng)緩存失效后嘴秸,瀏覽器攜帶緩存標(biāo)識(shí),由服務(wù)器根據(jù)緩存標(biāo)識(shí)決定使用緩存的過程.
    沒更新返回:304,通知客戶端讀取緩存信息庇谆,
    更新過返回:200和最新資源岳掐,已經(jīng)Last-Modified/ETag

強(qiáng)緩存與協(xié)商緩存區(qū)別
協(xié)商緩存總是發(fā)起請(qǐng)求與服務(wù)器溝通.不管有沒有緩存.
強(qiáng)緩存性能比協(xié)商緩存性能好很多.
兩種只針對(duì)于靜態(tài)資源文件,而且不是經(jīng)常更新的.

3.數(shù)據(jù)緩存饭耳,需要localStorage串述、vuex或者redux

3.DNS解析URL對(duì)應(yīng)的IP(將服務(wù)器地址,轉(zhuǎn)換成外網(wǎng)地址)域名解析 域名 外網(wǎng)IP

通過域名->找到外網(wǎng)IP->找到服務(wù)器地址.

DNS也是有緩存的,如果之前解析過會(huì)在本地有緩存(不一定,也是有周期的).

  • 遞歸查找(本地查詢)
  • 迭代查找 (依次遍歷每臺(tái)服務(wù)器)

DNS優(yōu)化:
1.減少DNS請(qǐng)求(一個(gè)頁(yè)面少用不同的域名寞肖,資源盡量都放在相同的服務(wù)器上纲酗,項(xiàng)目中不會(huì)這么干,項(xiàng)目中會(huì)將不同的資源分布在不同的服務(wù)器上)控制臺(tái)查看Source查看不同的域名.不同的資源服務(wù)器新蟆,要求不一樣觅赊,一般公司用的是服務(wù)器分布式.同一個(gè)源http可以同時(shí)發(fā)送4-7個(gè)請(qǐng)求,可以提高并發(fā)性.
2.DNA預(yù)獲取

//還沒有加載DOM提前發(fā)送請(qǐng)求
<link rel="dns-prefetch herf="xxxx">

4.根據(jù)IP建立TCP連接(三次握手)

1.建立連接通道

5.HTTP發(fā)起請(qǐng)求(傳輸數(shù)據(jù))

6.服務(wù)器處理請(qǐng)求栅葡,瀏覽器接收HTTP響應(yīng)

7.渲染頁(yè)面茉兰,構(gòu)建DOM樹.

8.關(guān)閉TCP連接(四次揮手)

9.產(chǎn)品性能優(yōu)化方案

  • http網(wǎng)絡(luò)層優(yōu)化
  • 代碼編譯層優(yōu)化webpack
  • 代碼運(yùn)行層優(yōu)化 html/css+javascript+vue/react(虛擬DOM)
  • 安全優(yōu)化xss+csrf
  • 數(shù)據(jù)埋點(diǎn)及性能監(jiān)控

10.CRP(關(guān)鍵渲染路徑)

11.TCP/IP

  • TCP建立客戶端與服務(wù)器端的傳輸通道(相當(dāng)于快遞傳送的路)
  • IP主機(jī)地址,根據(jù)IP找到主機(jī)地址.
  • HTTP傳輸協(xié)議(相當(dāng)于快遞員欣簇,http/https加密協(xié)議规脸,需要證書/ftp傳輸大文件)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坯约,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子莫鸭,更是在濱河造成了極大的恐慌闹丐,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件被因,死亡現(xiàn)場(chǎng)離奇詭異卿拴,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)梨与,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門堕花,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人粥鞋,你說我怎么就攤上這事缘挽。” “怎么了呻粹?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵壕曼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我等浊,道長(zhǎng)腮郊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任筹燕,我火速辦了婚禮轧飞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘庄萎。我一直安慰自己踪少,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布糠涛。 她就那樣靜靜地躺著援奢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪忍捡。 梳的紋絲不亂的頭發(fā)上集漾,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音砸脊,去河邊找鬼具篇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛凌埂,可吹牛的內(nèi)容都是我干的驱显。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼埃疫!你這毒婦竟也來了伏恐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤栓霜,失蹤者是張志新(化名)和其女友劉穎翠桦,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胳蛮,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡销凑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仅炊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斗幼。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖茂洒,靈堂內(nèi)的尸體忽然破棺而出孟岛,到底是詐尸還是另有隱情,我是刑警寧澤督勺,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站斤贰,受9級(jí)特大地震影響智哀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜荧恍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一瓷叫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧送巡,春花似錦摹菠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至摘投,卻和暖如春煮寡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背犀呼。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工幸撕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人外臂。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓坐儿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子貌矿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容