答:
一:首先FCP指標(biāo)就是用戶從輸入url到看到頁面內(nèi)首個(gè)圖片腮猖、文字或非空白svg canvas內(nèi)容的時(shí)間
二:我覺得FCP指標(biāo)既然是從用戶輸入url開始,那么其實(shí)就包含了1 用戶到HTML落地頁所在服務(wù)器的時(shí)間面睛,這里受用戶網(wǎng)速影響;包含了2 服務(wù)器的nginx路由配置指向我們所要訪問頁面的時(shí)間,這里受路由匹配爵赵,限制等影響;包含了3 服務(wù)器處理HTML落地頁的邏輯時(shí)間泊脐,比如是否需要在HTML落地頁渲染一些變量等空幻;包含了4 服務(wù)器返回HTML落地頁的時(shí)間,這里受用戶網(wǎng)速容客,HTML體積大小的影響(因?yàn)镠TTP2有g(shù)zip壓縮秕铛,一個(gè)200K的HTML落地頁,被返回前壓縮到了50K缩挑,等用戶瀏覽器下載下來后但两,其實(shí)下載傳輸?shù)氖?0K,但之后又需要解壓縮到200K然后被瀏覽器所識(shí)別)调煎;包含了5 HTML落地頁head頭內(nèi)容镜遣,我們知道HTML是從上向下被渲染執(zhí)行的,那么head頭里的無用dns預(yù)解析代碼士袄,多余的css js代碼悲关,都會(huì)是一個(gè)執(zhí)行的過程。那么一直到body部分娄柳,我們?cè)O(shè)置了骨架屏寓辱,然后被用戶看到。整個(gè)這個(gè)過程被認(rèn)為是FCP赤拒。
三秫筏、所以拋開服務(wù)端那一塊單純的說前端FCP是不現(xiàn)實(shí)的诱鞠,理解起來也不透徹。但用戶網(wǎng)速我們很難去改變这敬,做為前端開發(fā)人員服務(wù)端那一塊我們也只能是起到推動(dòng)的作用航夺,其實(shí)我們前端開發(fā)人員所能真正掌控的還是從下載了HTML開始這段內(nèi)容的。
四崔涂、FCP這個(gè)指標(biāo)是如何產(chǎn)生的呢阳掐?其實(shí)如果說前端FCP這塊呢,如果只是做一個(gè)靜態(tài)HTML頁面冷蚂,或者是前后端還沒有分離的太嚴(yán)重的時(shí)候缭保,F(xiàn)CP這個(gè)指標(biāo)值是很小的,因?yàn)楹髞韛ue和react等框架的盛行后蝙茶,大家習(xí)慣于在HTML落地頁寫一個(gè)<div id=”app” />艺骂,而不管我們的項(xiàng)目有多少組件,最終都要innerHTML到這個(gè)div中去隆夯。而我們的業(yè)務(wù)js+css下載需要時(shí)間钳恕,下載后解壓縮需要時(shí)間,然后被瀏覽器所識(shí)別后執(zhí)行又需要時(shí)間吮廉,這就造成了大量的白屏?xí)r間苞尝,甚至說之前的jquery時(shí)代白屏?xí)r間都要比這時(shí)間短
五、我在項(xiàng)目中最早是通過一些空白div元素制作骨架屏宦芦,然后在骨架屏塊元素內(nèi)填充大量的灰色塊宙址,骨架屏主要是照著首屏的dom內(nèi)容制作的,希望這樣可以讓用戶看到內(nèi)容调卑,覺得我們還在努力加載抡砂,使用戶可以有等待的預(yù)期。但我后來通過測(cè)速工具發(fā)現(xiàn)恬涧,這種情況并不理想注益,想想也是,這些div的dom內(nèi)容再加css樣式要組成dom樹溯捆,然后再被瀏覽器所渲染丑搔,也挺費(fèi)時(shí)間的。后來通過查資料發(fā)現(xiàn)FCP這個(gè)指標(biāo)提揍,瀏覽器更希望捕捉到的是文字啤月,圖片或是非空白的svb canvas圖片。后來我通過對(duì)比劳跃,覺得寫一個(gè)請(qǐng)等待的文字谎仲,或者弄一個(gè)loading圖效果都挺好的,但從用戶體驗(yàn)上講其實(shí)還是不如骨架屏更直觀刨仑。后來經(jīng)過摸索郑诺,我將骨架屏生成圖片夹姥,并且降質(zhì),最終再生成base64圖片再次使其體積減小辙诞。不斷的降低了FCP指標(biāo)時(shí)間辙售。
結(jié)語:其實(shí)面試很多時(shí)候要講氣場(chǎng)的,所謂氣場(chǎng)就是你問的我很懂倘要。怎么證明自己懂呢圾亏,面試官問的問題你先回答概念性的東西,然后說一說自己的理解封拧,光理解還不夠,因?yàn)榈裁嬖囶}夭问,其實(shí)他不光是一道題泽西,而是開發(fā)工作中的某一項(xiàng)痛點(diǎn)或者問題,而被無數(shù)人總結(jié)出來的一個(gè)精煉的問題缰趋,所以你最好還是能說一些自己在工作中使用情況捧杉。說一說優(yōu)缺點(diǎn)。
面試是一個(gè)3分運(yùn)氣秘血,7分能力的考試味抖,通過大量面試我發(fā)現(xiàn)95%的人其實(shí)入職后是可以正常工作的,但有95%的人卻過不了面試灰粮。那么我希望我的團(tuán)隊(duì)可以幫助更多的人提升這7分面試能力
而本次的FCP只是前端性能優(yōu)化指標(biāo)里的一個(gè)點(diǎn)仔涩,面試官有的會(huì)問前端性能優(yōu)化整個(gè)的問題,也有的會(huì)從單方面入手粘舟,但面試只是一次考試熔脂,不是上手開發(fā),所以我們盡量給大家后續(xù)帶來更多適合面試講的東西柑肴,尤其是疫情了霞揉,線上面試居多,希望大家可以把問題更好的講出來晰骑,講出你自己的氣場(chǎng)适秩。