
圖片,css,script,flash,等等這些都會增加http請求數(shù),減少這些元素的數(shù)量能減少響應(yīng)時間。CSS Sprites技術(shù)能減少圖片的請求數(shù),把零散的小圖片放到一起,運用background-position來改變背景圖片的位置,前提是html元素事先定義好寬高,其實就像一個遮罩,移動背景就會看到不同的景象。
1、內(nèi)嵌圖像
用data:URL scheme的方式把圖片內(nèi)容代碼直接嵌入html代碼中,這樣會增大html代碼的體積,改進的方式是把內(nèi)嵌圖片嵌入到css中(css被緩存),這樣就會更好的減少http請求數(shù)而且不增大html的體積。
2、合并文件
合并文件就是把很多JS文件合并成1個文件,很多CSS文件合并成1個文件,這種方法應(yīng)該很多人用到過,這里只推薦1個合并的工具:yuiCompressor 這個工具yahoo提供的。
3、合并圖片
這是利用css sprite,通過控制背景圖片的位置來顯示不同的圖片。
4、把JS、CSS合并到1個文件
上面第1種方法說的只是把幾個JS文件合并成1個JS文件,幾個CSS文件合并成1個CSS文件,那如何把CSS和JS都合并到1個文件中。
合并JS文件和CSS文件很多人都知道,也用過,目的是為了減少請求數(shù)。但有時候我們覺的把JS合并到1個文件,CSS又合并到另外1個文件也是浪費,我們?nèi)绾文馨袰SS和JS一起合并進1個文件了?
這里需要使用1個常見的注釋符<!-- 主要是利用css,js解析器對<!-- 進行不同的解析來實現(xiàn)JS和CSS合并的。
1. CSS解析器 會忽略<!--符號,
2. JS解析器會把<!--當(dāng)作注釋符號,與// 注釋相同。
5、使用Image maps
Image maps 是把多個圖片合并成1個圖片,然后使用html中的<map>標(biāo)簽連接圖片,并實現(xiàn)點擊圖片不同的區(qū)域執(zhí)行不同的動作,image map在導(dǎo)航條中比較容易使用到。
6、data嵌入圖片
這種方法把圖片進行編碼直接嵌入到html中進行使用,以減少HTTP請求,但這個會增加HTML頁面的大小,而且這樣嵌入的圖片不能緩存。
7、把靜態(tài)資源單獨放一臺靜態(tài)服務(wù)器或CDN,另外也可以做下CSS / JS /IMAGES 合并,可以在firefox下用Yslow插件分析一下。
如果負載高:
1)可以統(tǒng)計一下每個動態(tài)程序的執(zhí)行時間,時間長的程序優(yōu)化下
2)頁面上可能有太多動態(tài)操作功能,有些可以考慮做成異步
3)增加前端WEB SERVER,負載均衡分擔(dān)請求
8、最簡單的辦法是使用長連接(Socket)或設(shè)置HTTP的Keep-Alive字段。特別對于圖片密集型的應(yīng)用,一定要做持久連接。頻繁建立連接,很耗資源的。另外有可能是hacker在進行HTTP Flood攻擊
要減少http請求數(shù),應(yīng)該從動靜態(tài)分離、合并JS文件跟CSS文件、合并框架圖片以及相對變動較少的圖片成一張,通過CSS背景切割來完成渲染,比如:加速圖片顯示、合理使用本地Cache來緩存JS/CSS/IMAGE等方面入手,另外我補充幾點:
1)壓縮JS體積:刪除JS中空白換行,注釋,混淆把長變量換成短變量;
2)壓縮CSS體積:刪除CSS注釋、寫法盡量用簡寫;
補充說明:壓縮、合并JS和CSS都由程序處理。而不是自己手動去縮刪,不然不利于后期維護。
3)減少http請求頭,圖片js/css等靜態(tài)資源放在靜態(tài)服務(wù)器或CDN服時,盡量采用不用的域名,這樣能防止cookie不會互相污染,減少每次請求的往返數(shù)據(jù)。
相信看了這些方法,大家對如何減少http請求數(shù)有了一定的了解了吧。