常見問答

一剩彬、請(qǐng)說出幾種優(yōu)化前端性能的方法。(加載時(shí)間指感知的時(shí)間或者實(shí)際加載時(shí)間)

1. 減少HTTP請(qǐng)求次數(shù)

盡量合并圖片矿卑、CSS喉恋、JS。比如加載一個(gè)頁(yè)面母廷,如果有5個(gè)css文件的話轻黑,那么會(huì)發(fā)出5次http請(qǐng)求,這樣會(huì)讓用戶第一次訪問你的頁(yè)面的時(shí)候會(huì)長(zhǎng)時(shí)間等待琴昆。而如果把這個(gè)5個(gè)文件合成一個(gè)的話氓鄙,就只需要發(fā)出一次http請(qǐng)求,節(jié)省網(wǎng)絡(luò)請(qǐng)求時(shí)間业舍,加快頁(yè)面的加載抖拦。

2. 使用CDN

網(wǎng)站上靜態(tài)資源即css、js全都使用cdn分發(fā)舷暮,圖片亦然态罪。

3. 避免空的src和href

當(dāng)link標(biāo)簽的href屬性為空、script標(biāo)簽的src屬性為空的時(shí)候下面,瀏覽器渲染的時(shí)候會(huì)把當(dāng)前頁(yè)面的URL作為它們的屬性值复颈,從而把頁(yè)面的內(nèi)容加載進(jìn)來(lái)作為它們的值。所以要避免犯這樣的疏忽诸狭。

4. 為文件頭指定Expires

Exipres是用來(lái)設(shè)置文件的過期時(shí)間的券膀,一般對(duì)css、js驯遇、圖片資源有效芹彬。? 他可以使內(nèi)容具有緩存性,這樣下回再訪問同樣的資源時(shí)就通過瀏覽器緩存區(qū)讀取叉庐,不需要再發(fā)出http請(qǐng)求舒帮。如下例子:

<img src="https://pic1.zhimg.com/bfa4b58630eec8492318aa88cbb23378_b.png" data-rawwidth="1266" data-rawheight="160" class="origin_image zh-lightbox-thumb" width="1266" data-original="https://pic1.zhimg.com/bfa4b58630eec8492318aa88cbb23378_r.png">新浪微博的這個(gè)css文件的Expires時(shí)間是2016-5-04 09:14:14.

新浪微博的這個(gè)css文件的Expires時(shí)間是2016-5-04 09:14:14.

5. 使用gzip壓縮內(nèi)容

gzip能夠壓縮任何一個(gè)文本類型的響應(yīng),包括html,xml玩郊,json肢执。大大縮小請(qǐng)求返回的數(shù)據(jù)量。

6. 把CSS放到頂部

網(wǎng)頁(yè)上的資源加載時(shí)從上網(wǎng)下順序加載的译红,所以css放在頁(yè)面的頂部能夠優(yōu)先渲染頁(yè)面预茄,讓用戶感覺頁(yè)面加載很快。

7. 把JS放到底部

加載js時(shí)會(huì)對(duì)后續(xù)的資源造成阻塞侦厚,必須得等js加載完才去加載后續(xù)的文件 耻陕,所以就把js放在頁(yè)面底部最后加載。

8. 避免使用CSS表達(dá)式

舉個(gè)css表達(dá)式的例子

font-color: expression( (new Date()).getHours()%3 ? “#FFFFFF" : “#AAAAAA" );

這個(gè)表達(dá)式會(huì)持續(xù)的在頁(yè)面上計(jì)算樣式刨沦,影響頁(yè)面的性能诗宣。并且css表達(dá)式只被IE支持。

9. 將CSS和JS放到外部文件中

目的是緩存文件想诅,可以參考原則4召庞。 但有時(shí)候?yàn)榱藴p少請(qǐng)求,也會(huì)直接寫到頁(yè)面里来破,需根據(jù)PV和IP的比例權(quán)衡篮灼。

10. 權(quán)衡DNS查找次數(shù)

減少主機(jī)名可以節(jié)省響應(yīng)時(shí)間。但同時(shí)讳癌,需要注意穿稳,減少主機(jī)會(huì)減少頁(yè)面中并行下載的數(shù)量存皂。

IE瀏覽器在同一時(shí)刻只能從同一域名下載兩個(gè)文件晌坤。當(dāng)在一個(gè)頁(yè)面顯示多張圖片時(shí),IE 用戶的圖片下載速度就會(huì)受到影響旦袋。所以新浪會(huì)搞N個(gè)二級(jí)域名來(lái)放圖片骤菠。

下面是新浪微博的圖片域名,我們可以看到他有多個(gè)域名疤孕,這樣可以保證這些不同域名能夠同時(shí)去下載圖片商乎,而不用排隊(duì)。不過如果當(dāng)使用的域名過多時(shí)祭阀,響應(yīng)時(shí)間就會(huì)慢鹉戚,因?yàn)椴挥庙憫?yīng)域名時(shí)間不一致。

<img src="https://pic3.zhimg.com/1b3b00a1c147fc9211b6a90d55788a22_b.png" data-rawwidth="599" data-rawheight="62" class="origin_image zh-lightbox-thumb" width="599" data-original="https://pic3.zhimg.com/1b3b00a1c147fc9211b6a90d55788a22_r.png">

11. 精簡(jiǎn)CSS和JS

這里就涉及到css和js的壓縮了专控。比如下面的新浪的一個(gè)css文件抹凳,把空格回車全部去掉,減少文件的大小÷赘現(xiàn)在的壓縮工具有很多赢底,基本主流的前端構(gòu)建工具都能進(jìn)行css和js文件的壓縮,如grunt,glup等幸冻。

12. 避免跳轉(zhuǎn)


二粹庞、請(qǐng)描述一下cookies,sessionStorage和localStorage的區(qū)別洽损?

sessionStorage和localStorage是HTML5 Web Storage API提供的庞溜,可以方便的在web請(qǐng)求之間保存數(shù)據(jù)。

有了本地?cái)?shù)據(jù)碑定,就可以避免數(shù)據(jù)在瀏覽器和服務(wù)器間不必要地來(lái)回傳遞强缘。

sessionStorage、localStorage不傅、cookie都是在瀏覽器端存儲(chǔ)的數(shù)據(jù)旅掂,其中sessionStorage的概念很特別,引入了一個(gè)“瀏覽器窗口”的概念访娶。

sessionStorage是在同源的同窗口(或tab)中商虐,始終存在的數(shù)據(jù)。也就是說只要這個(gè)瀏覽器窗口沒有關(guān)閉崖疤,即使刷新頁(yè)面或進(jìn)入同源另一頁(yè)面秘车,數(shù)據(jù)仍然存在。

關(guān)閉窗口后劫哼,sessionStorage即被銷毀叮趴。同時(shí)“獨(dú)立”打開的不同窗口,即使是同一頁(yè)面权烧,sessionStorage對(duì)象也是不同的cookies會(huì)發(fā)送到服務(wù)器端眯亦。其余兩個(gè)不會(huì)。Microsoft指出InternetExplorer8增加cookie限制為每個(gè)域名50個(gè)般码,但I(xiàn)E7似乎也允許每個(gè)域名50個(gè)cookie妻率。


三、javascript中的MVVM開發(fā)模式?是什么

它是MVC模式的衍生物板祝,MVVM模式的關(guān)注點(diǎn)在能夠支持事件驅(qū)動(dòng)的UI開發(fā)平臺(tái)

大部分都是通過在view層聲明數(shù)據(jù)綁定來(lái)和其他層分離的宫静,這樣就方便了前端開發(fā)人員和后端開發(fā)人員 的分工,前端開發(fā)人員在html標(biāo)簽中寫對(duì)viewmodel的綁定數(shù)據(jù)券时,model和viewmodel是后端開發(fā)人員通過開發(fā)應(yīng)用的邏輯來(lái)維護(hù)這兩層孤里。


優(yōu)點(diǎn):

MVVM使并行開發(fā)更加容易,使前端開發(fā)和后端開發(fā)人員互不影響橘洞。

抽象化View層捌袜,減少了代碼中的業(yè)務(wù)邏輯

ViewModel比事件驅(qū)動(dòng)更容易測(cè)試

ViewModel的測(cè)試不用關(guān)心uI的自動(dòng)化和交互

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市震檩,隨后出現(xiàn)的幾起案子琢蛤,更是在濱河造成了極大的恐慌蜓堕,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件博其,死亡現(xiàn)場(chǎng)離奇詭異套才,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)慕淡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門背伴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人峰髓,你說我怎么就攤上這事傻寂。” “怎么了携兵?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵疾掰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我徐紧,道長(zhǎng)静檬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任并级,我火速辦了婚禮拂檩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嘲碧。我一直安慰自己稻励,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布愈涩。 她就那樣靜靜地躺著望抽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钠署。 梳的紋絲不亂的頭發(fā)上糠聪,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音谐鼎,去河邊找鬼。 笑死趣惠,一個(gè)胖子當(dāng)著我的面吹牛狸棍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播味悄,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼草戈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了侍瑟?” 一聲冷哼從身側(cè)響起唐片,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤丙猬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后费韭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茧球,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年星持,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抢埋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡督暂,死狀恐怖揪垄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情逻翁,我是刑警寧澤饥努,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站八回,受9級(jí)特大地震影響肪凛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辽社,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一伟墙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧滴铅,春花似錦戳葵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至噩翠,卻和暖如春戏自,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背伤锚。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工擅笔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人屯援。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓猛们,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親狞洋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子弯淘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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

  • 1、angularjs的幾大特性是什么吉懊? 雙向數(shù)據(jù)綁定庐橙、依賴注入假勿、模板、指令态鳖、MVC/MVVM 2转培、列舉幾種常見的...
    2e9a10d418ab閱讀 1,271評(píng)論 0 10
  • 1、angularjs的幾大特性是什么郁惜? 雙向數(shù)據(jù)綁定堡距、依賴注入、模板兆蕉、指令羽戒、MVC/MVVM 2、列舉幾種常見的...
    秀才JaneBook閱讀 1,542評(píng)論 0 22
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,072評(píng)論 25 707
  • 常見試題 行內(nèi)元素:會(huì)在水平方向排列虎韵,不能包含塊級(jí)元素易稠,設(shè)置width無(wú)效,height無(wú)效(可以設(shè)置line-h...
    他大舅啊閱讀 2,439評(píng)論 1 5
  • 自媒體這個(gè)詞兒包蓝,是相對(duì)于傳統(tǒng)媒體來(lái)說的驶社。在過去的很長(zhǎng)時(shí)間里,人們單一的接受報(bào)紙测萎,電視亡电,雜志等媒體上的信息。 就像一...
    成成日志閱讀 364評(píng)論 0 1