前端性能-減少Http請(qǐng)求

Rule1 Make fewer http requests

依據(jù)性能黃金法則,80%的時(shí)間花費(fèi)在了Images,scripts,stylesheets,Flash等Http請(qǐng)求上,我們需要花費(fèi)在這塊的時(shí)間,這些技術(shù)包括使用image maps,css sprites,inline images,和合并javascript與stylesheets

image maps

如果你頁(yè)面上有很多帶鏈接的圖片,image maps(圖片地圖)是一種減少Http請(qǐng)求數(shù)量的方式。一個(gè)image maps允許你在單張圖片上放置相關(guān)的多個(gè)鏈接地址,用戶點(diǎn)擊圖片上不同的區(qū)域,跳轉(zhuǎn)到不同的鏈接頁(yè)面;
有兩種類型的image maps,一種是server-side image maps, 這種maps,所有的點(diǎn)擊都請(qǐng)求同一個(gè)URL,并且參數(shù)附帶用戶點(diǎn)擊點(diǎn)的x,y坐標(biāo);另一種是Client-side image maps,這種更加常用,因?yàn)橛脩酎c(diǎn)擊不同的區(qū)域,請(qǐng)求不同的URL;如下

![](/img/imagemap.gif)
<map name="map1">
  <area shape="rect" coords="0,0,31,31" href="home.html" title="Home">
  <area shape="rect" coords="36,0,66,31" href="gifts.html" title="Gifts">
</map>

-- image map詳細(xì)資料可查看
https://en.wikipedia.org/wiki/Image_map
-- client-side image maps的實(shí)例
https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_areamap

css sprites

俗稱雪碧圖,具體怎么做應(yīng)該都知道;說說它的益處吧,它不僅減少了Http請(qǐng)求數(shù),而且相對(duì)image maps更加靈活,因?yàn)閕mage map要求使用的圖片要求圖形有順序,單sprites不需要;
另外一般人都認(rèn)為合并圖片會(huì)比分開的圖片總量的大小要來的大,因?yàn)楹喜⒑蟮膱D片有格外增加的空白區(qū)域,事實(shí)上合并的圖片反而趨于更小,因?yàn)楹喜⒌膱D片相對(duì)分開的圖片減少了存儲(chǔ)的信息開銷,比如顏色表,格式形式等;

inline images

使用data:URL 協(xié)議使你的頁(yè)面直接包含圖像而不需要任何Http請(qǐng)求是可能的,但瀏覽器直到ie8才支持;格式如下

data:[<mediatype>][;base64],<data>

data:不單單能使用于內(nèi)聯(lián)圖片,任務(wù)一個(gè)指定URL的地方都能使用它,包括script和a 標(biāo)簽;
因?yàn)閐ata:URLs內(nèi)嵌于頁(yè)面中,所以在不同頁(yè)面訪問中并不會(huì)緩存他們,從而增大頁(yè)面的大小,一種聰明的做法是通過外聯(lián)css和內(nèi)容圖片作為背景圖設(shè)置來使內(nèi)嵌圖片隨著css一塊被緩存,在多個(gè)頁(yè)面都使用到這個(gè)內(nèi)嵌圖片的情況下,是值得這么做的,比如網(wǎng)站logo;

-- 如何生成圖片的base64編碼
使用一些在線工具,比如這個(gè)http://www.pjhome.net/web/html5/encodeDataUrl.htm;
或者使用google chrome開發(fā)者工具,在 chrome 下新建一個(gè)窗口,然后把要轉(zhuǎn)化的圖片直接拖入瀏覽器,打開控制臺(tái),點(diǎn) Source,點(diǎn)擊圖片,右側(cè)就會(huì)顯示該圖片的 base64 編碼

combined scripts and Stylesheets

理想狀態(tài)下,把一個(gè)網(wǎng)頁(yè)上引用的多個(gè)script腳本合并成一個(gè),把引用的多個(gè)樣式文件合并成一個(gè),以此來減少http請(qǐng)求數(shù),一般合并后還會(huì)有另一個(gè)步驟來減少文件大小,叫做壓縮;

-- 如何合并
一般使用grunt或者gulp打包工具的童鞋都知道,都能輕松做到;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 網(wǎng)站優(yōu)化離不開前后端的互相協(xié)作,但是對(duì)于前端工程師來說,在保證后端技術(shù)方案不變時(shí),能不能只利用前端技術(shù)來優(yōu)化網(wǎng)站呢...
    留七七閱讀 6,585評(píng)論 0 31
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,160評(píng)論 1 92
  • Yahoo!的Exceptional Performance團(tuán)隊(duì)為改善Web性能帶來最佳實(shí)踐。他們?yōu)榇诉M(jìn)行了一系列...
    拉風(fēng)的老衲閱讀 1,957評(píng)論 0 1
  • 我們?cè)L問網(wǎng)站的時(shí)候,會(huì)對(duì)服務(wù)器發(fā)出HTTP請(qǐng)求,網(wǎng)站打開的速度快慢與頁(yè)面的大小有關(guān)外,還有個(gè)重要的因素就是HTTP...
    咘嚕咘嚕咘閱讀 1,714評(píng)論 0 1
  • 接下來的幾天就是吃吃吃,孩子瘋瘋瘋,瘋的大人不想上班,小孩不想上幼兒園,連收心日都沒留出來。 先說說吃...
    紅紅2017閱讀 367評(píng)論 0 0

友情鏈接更多精彩內(nèi)容