最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

高性能WEB開發(fā) 為什么要減少請求數(shù),如何減少請求數(shù)!

 更新時(shí)間:2010年05月14日 00:42:06   作者:  
我們先分析下請求頭,看看每次請求都帶了那些額外的數(shù)據(jù).下面是監(jiān)控的google的請求頭
http請求頭的數(shù)據(jù)量

我們先分析下請求頭,看看每次請求都帶了那些額外的數(shù)據(jù).下面是監(jiān)控的google的請求頭

Host www.google.com.hk
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTBDFff GTB7.0
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language zh-cn,en-us;q=0.7,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Proxy-Connection keep-alive


返回的response head

Date Sat, 17 Apr 2010 08:18:18 GMT
Expires -1
Cache-Control private, max-age=0
Content-Type text/html; charset=UTF-8
Set-Cookie PREF=ID=b94a24e8e90a0f50:NW=1:TM=1271492298:LM=1271492298:S=JH7CxsIx48Zoo8Nn; expires=Mon, 16-Apr-2012 08:18:18 GMT; path=/; domain=.google.com.hk NID=33=EJVyLQBv2CSgpXQTq8DLIT2JQ4aCAE9YKkU2x-h4hVw_ATrGx7njA69UUBMbzVHVnkAOe_jlGGzOoXhQACSFDP1i53C8hWjRTJd0vYtRNWhGYGv491mwbngkT6LCYbvg; expires=Sun, 17-Oct-2010 08:18:18 GMT; path=/; domain=.google.com.hk; HttpOnly
Content-Encoding gzip
Server gws

Content-Length 4344


這里發(fā)送的請求頭的大小大概420 bytes,返回的請求頭大概 600 bytes。

可見每次請求都會帶上一些額外的信息進(jìn)行傳輸(這次請求中還沒有帶cookie),當(dāng)請求的資源很小,比如1個(gè)不到1k的圖標(biāo),可能request帶的數(shù)據(jù)比實(shí)際圖標(biāo)的數(shù)據(jù)量還大。

所以當(dāng)請求越多的時(shí)候,在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)自然就多,傳輸速度自然就慢了。

其實(shí)request自帶的數(shù)據(jù)量還是小問題,畢竟request能帶的數(shù)據(jù)量還是有限的。

http連接的開銷


相比request頭部多余的數(shù)據(jù),http連接的開銷則更加嚴(yán)重。先看看從用戶輸入1個(gè)URL到下載內(nèi)容到客戶端需要經(jīng)過哪些階段:

1. 域名解析
2. 開啟TCP連接
3. 發(fā)送請求
4. 等待(主要包括網(wǎng)絡(luò)延遲和服務(wù)器處理時(shí)間)
5. 下載資源


可能很多人認(rèn)為每次請求大部分時(shí)間都花在下載資源上,讓我們看看blogjava資源下載瀑布圖(每種顏色代表的階段與上面5個(gè)階段對應(yīng)):

看了上圖你可能驚訝,花費(fèi)在等待階段的時(shí)間比實(shí)際下載的時(shí)間要多的多,上圖告訴我們:
1. 每次請求花費(fèi)的大部分時(shí)間在其他階段,而不是在下載資源階段
2. 再小的資源照樣會花費(fèi)很多時(shí)間在其他階段,只是下載階段會比較短(見上圖的第6個(gè)資源,才284Byte)。

正對上面提到的2種情況,我們應(yīng)該要怎么進(jìn)行優(yōu)化了?減少請求數(shù)來減少其他階段的花銷和網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)。

如何減少請求數(shù)

1、合并文件
合并文件就是把很多JS文件合并成1個(gè)文件,很多CSS文件合并成1個(gè)文件,這種方法應(yīng)該很多人用到過,這里不做詳細(xì)介紹,
只推薦1個(gè)合并的工具:yuiCompressor 這個(gè)工具yahoo提供的。 http://developer.yahoo.com/yui/compressor/

2、合并圖片
這是利用css sprite,通過控制背景圖片的位置來顯示不同的圖片。這種技術(shù)也是大家都用過的,不做詳細(xì)介紹,推薦1個(gè)在線合并圖片的網(wǎng)站:http://csssprites.com/

3、把JS、CSS合并到1個(gè)文件
上面第1種方法說的只是把幾個(gè)JS文件合并成1個(gè)JS文件,幾個(gè)CSS文件合并成1個(gè)CSS文件,哪如何把CSS和JS都合并到1個(gè)文件中,見我的另1篇文章:
http://www.blogjava.net/BearRui/archive/2010/04/18/combin_css_js.html

4、使用Image maps
Image maps 是把多個(gè)圖片合并成1個(gè)圖片,然后使用html中的<map>標(biāo)簽連接圖片,并實(shí)現(xiàn)點(diǎn)擊圖片不同的區(qū)域執(zhí)行不同的動作,image map在導(dǎo)航條中比較容易使用到。
image map的使用方法見: http://www.w3.org/TR/html401/struct/objects.html#h-13.6

5、data嵌入圖片
這種方法把圖片進(jìn)行編碼直接嵌入到html中進(jìn)行使用,以減少HTTP請求,但這個(gè)會增加HTML頁面的大小,而且這樣嵌入的圖片不能緩存。見下面這個(gè)圖片:


上面的圖片就是把圖片進(jìn)行base64編碼后使用data:嵌入到html中,代碼如下(后面的省略了,大家可以查看源代碼看):
<IMG SRC="data:image/gif;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAWRXhpZgAASUkqAAgAA......">


其中g(shù)oogle的視頻搜索中,搜索出來的視頻縮略圖就都是使用嵌入的圖片的,見下圖:



以上幾種方法在都有利有弊,在不同情況下可以選擇不同的使用方式,比如使用data嵌入圖片雖然減少了請求數(shù),但會增加頁面大小。


所以微軟的bing搜索在用戶第一次訪問的時(shí)候使用data嵌入圖片,然后后臺懶加載真真的圖片,以后訪問就直接使用緩存的圖片,而不使用data。

[聲明] 轉(zhuǎn)載請注明出處:http://www.blogjava.net/BearRui/。 禁止商用!

相關(guān)文章

  • 用Meta標(biāo)簽控制360瀏覽器默認(rèn)極速模式打開自己的網(wǎng)站

    用Meta標(biāo)簽控制360瀏覽器默認(rèn)極速模式打開自己的網(wǎng)站

    最近用360瀏覽器訪問自己的網(wǎng)站,發(fā)現(xiàn)都是被優(yōu)先選用兼容模式打開,這使得網(wǎng)站很難看。為了讓360瀏覽器打開網(wǎng)站的時(shí)候優(yōu)先使用極速模式,而非兼容模式,找了一下官方論壇,發(fā)現(xiàn)了解決方案。
    2016-07-07
  • 算法系列15天速成 第五天 五大經(jīng)典查找【中】

    算法系列15天速成 第五天 五大經(jīng)典查找【中】

    大家可否知道,其實(shí)查找中有一種O(1)的查找,即所謂的秒殺
    2013-11-11
  • 如何使用?Merklized?抽象語法樹壓縮智能合約

    如何使用?Merklized?抽象語法樹壓縮智能合約

    Merklized?抽象語法樹?MAST(又名?Merklized?替代腳本樹)是一種使用?Merkle?樹壓縮比特幣智能合約的技術(shù),這篇文章主要介紹了使用?Merklized?抽象語法樹壓縮智能合約,需要的朋友可以參考下
    2023-12-12
  • ApacheJMeter壓力測試工具使用安裝教程

    ApacheJMeter壓力測試工具使用安裝教程

    本文主要介紹了Apache JMeter的安裝使用教程,Apache JMeter是開源軟件,100%純Java應(yīng)用程序,旨在加載測試功能行為和測量性能。它最初設(shè)計(jì)用于測試Web應(yīng)用程序,但后來擴(kuò)展到其他測試功能
    2021-09-09
  • Git使用小技巧之回滾與撤銷詳解

    Git使用小技巧之回滾與撤銷詳解

    這篇文章主要給大家介紹了關(guān)于Git使用小技巧之回滾與撤銷的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Git具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 教你編寫 Pipeline 腳本的方法

    教你編寫 Pipeline 腳本的方法

    Pipeline 編寫較為麻煩,為此,DataKit 中內(nèi)置了簡單的調(diào)試工具,用以輔助大家來編寫 Pipeline 腳本,這篇文章主要介紹了如何編寫 Pipeline 腳本,需要的朋友可以參考下
    2022-10-10
  • 進(jìn)制轉(zhuǎn)換算法原理(二進(jìn)制 八進(jìn)制 十進(jìn)制 十六進(jìn)制)

    進(jìn)制轉(zhuǎn)換算法原理(二進(jìn)制 八進(jìn)制 十進(jìn)制 十六進(jìn)制)

    進(jìn)制轉(zhuǎn)換算法原理(二進(jìn)制 八進(jìn)制 十進(jìn)制 十六進(jìn)制),以前上學(xué)那會確實(shí)學(xué)過,長時(shí)間不用都忘了。
    2010-05-05
  • HTTP與HTTPS握手的那些事

    HTTP與HTTPS握手的那些事

    今天我總結(jié)了什么是HTTP三次握手,還有HTTPS握手的過程以及為什么HTTPS是安全的,需要的朋友可以參考下
    2017-05-05
  • 程序員編程從初級到中級的10個(gè)秘訣

    程序員編程從初級到中級的10個(gè)秘訣

    在一封與TechRepublic會員交流的郵件當(dāng)中,他提到了面向程序員的博客、文章及雜志分成兩類:面向初學(xué)者類(“hello world”這種類型的教程)以及面向?qū)<翌悾∕SDN雜志)。
    2011-02-02
  • VSCode讓終端默認(rèn)在當(dāng)前文件的路徑啟動(方法推薦)

    VSCode讓終端默認(rèn)在當(dāng)前文件的路徑啟動(方法推薦)

    這篇文章主要介紹了VSCode中如何讓終端默認(rèn)在當(dāng)前文件的路徑啟動,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03

最新評論

道孚县| 公主岭市| 闽侯县| 安平县| 汽车| 富源县| 普兰县| 芒康县| 云和县| 灵石县| 林芝县| 剑河县| 南漳县| 百色市| 古田县| 滁州市| 铜陵市| 吉木萨尔县| 新密市| 偃师市| 裕民县| 隆德县| 观塘区| 闽侯县| 大厂| 高青县| 灵寿县| 韶关市| 大连市| 南宁市| 武强县| 济宁市| 安龙县| 莫力| 长宁区| 河曲县| 凤凰县| 岚皋县| 新乐市| 明水县| 临清市|