web前端開發(fā)性能優(yōu)化資料總結(jié)

關(guān)于前端性能優(yōu)化網(wǎng)上資料很多很多惩歉。。此篇文章不是鵬哥寫的俏蛮,只是之前獲取的資料撑蚌,別人的,發(fā)上來記錄一些搏屑,以后看著方便争涌,其實(shí)性能優(yōu)化總歸也就那些,減少請(qǐng)求辣恋,壓縮代碼亮垫,壓縮圖片,圖片延遲加載伟骨,預(yù)加載饮潦,等等等~~~

1.Minimize HTTP Requests 減少HTTP請(qǐng)求

圖片、css携狭、script继蜡、flash等等這些都會(huì)增加http請(qǐng)求數(shù),減少這些元素的數(shù)量就能減少響應(yīng)時(shí)間。把多個(gè)JS稀并、CSS在可能的情況下寫進(jìn)一個(gè)文件鲫剿,頁(yè)面里直接寫入圖片也是不好的做法,應(yīng)該寫進(jìn)CSS里稻轨,利用 CSS sprites 將小圖拼合后利用background來定位灵莲。

2.Use a Content Delivery Network 利用CDN技術(shù)

CDN 確實(shí)是好東西,8過服務(wù)器提供商的這項(xiàng)服務(wù)一般是要收費(fèi)的殴俱,我以前買的國(guó)內(nèi)空間是有這個(gè)的但是我當(dāng)時(shí)根本不知道啥用政冻,現(xiàn)在沒了。线欲。明场。

3.Add an Expires or a Cache-Control Header 設(shè)置頭文件過期或者靜態(tài)緩存

瀏覽器會(huì)用緩存來減少http請(qǐng)求數(shù)來加快頁(yè)面加載的時(shí)間,如果頁(yè)面頭部加一個(gè)很長(zhǎng)的過期時(shí)間李丰,瀏覽器就會(huì)一直緩存頁(yè)面里的元素苦锨。不過這樣如果 頁(yè)面里的東西變動(dòng)的話就要改名字了,否則用戶端不會(huì)主動(dòng)刷新趴泌,看自己衡量了~ 這項(xiàng)可以通過修改.htaccess文件來實(shí)現(xiàn)舟舒。

4.Gzip Components Gzip壓縮

Gzip格式是一種很普遍的壓縮技術(shù),幾乎所有的瀏覽器都有解壓Gzip格式的能力嗜憔,而且它可以壓縮的比例非常大秃励,一般壓縮率為85%。壓縮沒壓縮吉捶,可以到 這里 做下測(cè)試夺鲜。

5.Put Stylesheets at the Top 把CSS放頂部

讓瀏覽者能盡早的看到網(wǎng)站的完整樣式。

6.Put Scripts at the Bottom 把JS放底部

網(wǎng)站呈現(xiàn)完畢后再進(jìn)行功能設(shè)置呐舔,當(dāng)然這些JS要在你的加載過程中不影響內(nèi)容表現(xiàn)币励。

7.Avoid CSS Expressions 避免CSS Expressions

CSS表達(dá)式很可怕,這個(gè)只被IE支持的東西執(zhí)行時(shí)候的運(yùn)算量非常大珊拼,你移動(dòng)一下鼠標(biāo)它都要進(jìn)行重計(jì)算的食呻,但有時(shí)候?yàn)榱俗鰹g覽器的兼容必須要用到這個(gè)||| IE6去死去死!~

8.Make JavaScript and CSS External 將JS和CSS外鏈

前面講到了緩存這個(gè)事情杆麸,一些較為公用的JS和CSS搁进,我們可以使用外鏈的形式浪感,譬如我就是從Google外鏈來的jQuery文件,如果我的瀏覽者在瀏覽別的使用了這個(gè)外鏈文件的網(wǎng)站時(shí)已經(jīng)下載并緩存了這個(gè)文件,那么他在瀏覽我的網(wǎng)站的時(shí)候就不需要再進(jìn)行下載了矫付!~

9.Reduce DNS Lookups 減少DNS查找

貌似是要減少網(wǎng)站從外部調(diào)用資源舰始,我的Google分析和picasa的外鏈圖片都算在里面了。

10.Minify JavaScript and CSS 減小JS和CSS的體積

寫JS和CSS都是有技巧的,用最少的代碼實(shí)現(xiàn)同樣的功能讹开,減少空白盅视,增強(qiáng)邏輯性,用縮寫方式等等旦万,當(dāng)然也有不少工具也能夠幫你實(shí)現(xiàn)這一點(diǎn)闹击。

11. Avoid Redirects 避免重定向

再寫入鏈接時(shí),雖然”http://www. today-s-ooxx. com”和”http://www. today-s-ooxx. com/” 僅有一個(gè)最后的”/”只差成艘,但是結(jié)果是不同的赏半,服務(wù)器需要花時(shí)間把前者重定向?yàn)楹笳呷缓筮M(jìn)行跳轉(zhuǎn),這個(gè)要自己注意淆两,也可以在Apache里用Alias 或者mod_rewrite或者DirectorySlash解決断箫。

12. Remove Duplicate Scripts 刪除重復(fù)腳本

重復(fù)調(diào)用的代碼瀏覽器并不會(huì)識(shí)別忽略,而是會(huì)再次運(yùn)算一遍秋冰,這當(dāng)然是大大的浪費(fèi)仲义。

13. Configure ETags 配置ETags

搞不清楚咋回事,總之我是在. htaccess里把它刪除了剑勾。

14. Make Ajax Cacheable 緩存Ajax

Ajax是實(shí)時(shí)響應(yīng)的埃撵,在瀏覽器接收到新的數(shù)據(jù)前,舊的數(shù)據(jù)被緩存虽另,這樣能夠更好的提高效率盯另。

15. Flush the Buffer Early 盡早的釋放緩沖

當(dāng)用戶進(jìn)行頁(yè)面請(qǐng)求時(shí),服務(wù)器端需要花費(fèi)200到500毫秒時(shí)間來拼合HTML洲赵,將寫在head與body之間鸳惯,釋放緩沖,這樣可以將文件頭先發(fā)送出去叠萍,然后再發(fā)送文件內(nèi)容芝发,提高效率。

16. Use GET for AJAX Requests 用GET方式進(jìn)行AJAX請(qǐng)求

Get 方法和服務(wù)器只有一次交互(發(fā)送數(shù)據(jù))苛谷,而 Post 要兩次(發(fā)送頭部再發(fā)送數(shù)據(jù))辅鲸。

17. Post-load Components 延遲加載組件

最先加載必須的組件進(jìn)行頁(yè)面初始化,然后再加載其他腹殿,YUI Image Loader 是很好的例子独悴。

18. Preload components 預(yù)加載組件

提前加載以后可能用到的東西,和延遲加載并不沖突锣尉,它的目的是為后續(xù)請(qǐng)求提供更快的響應(yīng)刻炒,參見Google首頁(yè)上的CSS sprites應(yīng)用。

19. Reduce the Number of DOM Elements 減少DOM元素?cái)?shù)量

復(fù)雜的頁(yè)面結(jié)構(gòu)意味著更長(zhǎng)的下載及響應(yīng)時(shí)間自沧,更合理更高效的使用標(biāo)簽來架構(gòu)頁(yè)面坟奥,是好的前端的必備條件。

20. Split Components Across Domains 跨域分離組件

頁(yè)面組件多個(gè)來源可以增大你的平行下載量,但注意不要過多爱谁,超過2-4個(gè)域名會(huì)引起上面說到的DNS查找浪費(fèi)晒喷。

21. Minimize the Number of iframes 減少iframe數(shù)量

需要更有效的利用 ifames。
iframe 優(yōu)點(diǎn):有利于下載緩慢的廣告等第三方內(nèi)容访敌,安全沙箱凉敲,并行下載腳本
iframe 缺點(diǎn):即使為空也會(huì)有較大資源消耗,會(huì)阻止頁(yè)面的onload寺旺,非語義

22. No 404s 不要出現(xiàn)404頁(yè)面

站點(diǎn)本身里(非搜索結(jié)果)出現(xiàn)404頁(yè)面荡陷,無意義的404頁(yè)面會(huì)影響用戶體驗(yàn)并且會(huì)消耗服務(wù)器資源。

23. Reduce Cookie Size 減小Cookie

Cookie在服務(wù)器及瀏覽器之間的通過文件頭進(jìn)行交換迅涮,盡可能減小Cookie體積废赞,設(shè)置合理的過期時(shí)間,能夠很好的提高效率叮姑。

24. Use Cookie-free Domains for Components 對(duì)組件使用無Cookie的域名

對(duì)靜態(tài)組件的Cookie讀取是一種浪費(fèi)唉地,使用另一個(gè)無Cookie的域名來存放你的靜態(tài)組件式一個(gè)好方法,或者也可以在Cookie中只存放帶www的域名传透。

25. Minimize DOM Access 減少DOM的訪問次數(shù)

JS訪問DOM是很慢的耘沼,盡量不要用JS來設(shè)置頁(yè)面布局。

26. Develop Smart Event Handlers 開發(fā)靈活的事件處理句柄

DOM樹上過多的元素被加入事件句柄的話朱盐,反應(yīng)效率肯定會(huì)低群嗤,YUI事件工具有一個(gè) onAvailable 方法可以幫助你靈活的設(shè)置DOM事件句柄

27. Choose < link >over @import 使用< link >而非 @import

在IE中使用@import就和在頁(yè)面底部用< link >一樣,我們前面說要把< link >放頂部的兵琳。

28. Avoid Filters 避免過濾器的使用

如果需要Alpha透明狂秘,不要使用AlphaImageLoader,它效率低下而且只對(duì)IE6及以下的版本適用躯肌,用PNG8圖片者春。如果你非要使用,加上_filter以免影響IE7+用戶清女。

29. Optimize Images 優(yōu)化圖片

將你的GIF轉(zhuǎn)為PNG8會(huì)是個(gè)減小體積的好辦法钱烟,另外有很多方法處理你的JPG及PNG圖片以達(dá)到優(yōu)化效果。

30. Optimize CSS Sprites 優(yōu)化CSS Sprites

在CSS Sprites中豎直并盡量緊湊的排列圖片嫡丙,盡量將顏色相似的圖片排在一起拴袭,會(huì)減小圖片本身的大小及提高頁(yè)面圖片顯示速度。

31. Don’t Scale Images in HTML 不要在HTML中縮放圖片

圖片要用多大的就用多大的曙博,1000X1000的圖片被width=”100″ height=”100″以后拥刻,本身的KB數(shù)是不會(huì)減少的。

32. Make favicon. ico Small and Cacheable 縮小favicon. ico的大小并緩存它

站點(diǎn)的瀏覽器ICO應(yīng)該不是經(jīng)常換吧羊瘩,那就長(zhǎng)時(shí)間的緩存它泰佳,并且最好控制在1K以下盼砍。

33. Keep Components under 25K 保證組件在25K以下

iPhone不能緩存25K以上的組件尘吗,并且這還是要在被壓縮前逝她。

34. Pack Components into a Multipart Document 將組件打包進(jìn)一個(gè)多部分的文檔中

就好像在郵件中加入附件一樣,一個(gè)HTTP請(qǐng)求就夠了睬捶,但是這一技術(shù)需要確保你的代理支持黔宛,iPhone就不支持。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末擒贸,一起剝皮案震驚了整個(gè)濱河市臀晃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌介劫,老刑警劉巖徽惋,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異座韵,居然都是意外死亡险绘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門誉碴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宦棺,“玉大人,你說我怎么就攤上這事黔帕〈蹋” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵成黄,是天一觀的道長(zhǎng)呐芥。 經(jīng)常有香客問我,道長(zhǎng)奋岁,這世上最難降的妖魔是什么贩耐? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮厦取,結(jié)果婚禮上潮太,老公的妹妹穿的比我還像新娘。我一直安慰自己虾攻,他們只是感情好铡买,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著霎箍,像睡著了一般奇钞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上漂坏,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天景埃,我揣著相機(jī)與錄音媒至,去河邊找鬼。 笑死谷徙,一個(gè)胖子當(dāng)著我的面吹牛拒啰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播完慧,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼谋旦,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了屈尼?” 一聲冷哼從身側(cè)響起册着,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎脾歧,沒想到半個(gè)月后甲捏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鞭执,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年司顿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚕冬。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡免猾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出囤热,到底是詐尸還是另有隱情猎提,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布旁蔼,位于F島的核電站锨苏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏棺聊。R本人自食惡果不足惜伞租,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望限佩。 院中可真熱鬧葵诈,春花似錦、人聲如沸祟同。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晕城。三九已至泞坦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間砖顷,已是汗流浹背贰锁。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工赃梧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人豌熄。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓授嘀,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親房轿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子粤攒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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

  • 網(wǎng)站優(yōu)化離不開前后端的互相協(xié)作所森,但是對(duì)于前端工程師來說囱持,在保證后端技術(shù)方案不變時(shí),能不能只利用前端技術(shù)來優(yōu)化網(wǎng)站呢...
    留七七閱讀 6,311評(píng)論 0 31
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,867評(píng)論 25 707
  • Yahoo!的Exceptional Performance團(tuán)隊(duì)為改善Web性能帶來最佳實(shí)踐焕济。他們?yōu)榇诉M(jìn)行了一系列...
    拉風(fēng)的老衲閱讀 1,837評(píng)論 0 1
  • 將多種類型的數(shù)據(jù)用一個(gè)類型來表示纷妆,但是只能聲明變量,不能賦初值晴弃。 結(jié)構(gòu)體的訪問用“.”來訪問掩幢。 結(jié)構(gòu)體指針Stud...
    Mustard_Buli閱讀 221評(píng)論 4 0
  • 一、二月目標(biāo)回顧 先上一張二月目標(biāo)回顧圖表感受一下: 看著滿屏延遲和取消上鞠,感覺自己二月份是不是被狗吃了际邻,目標(biāo)達(dá)成率...
    紫微閱讀 207評(píng)論 0 1