佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 高性能WEB開發(fā) 圖片壓縮篇

高性能WEB開發(fā) 圖片壓縮篇

熱門標簽:銀行業(yè)務 網站文章發(fā)布 檢查注冊表項 智能手機 服務器配置 鐵路電話系統(tǒng) 呼叫中心市場需求 美圖手機
一、縮小圖片大小

當圖片很多的時候,減少圖片大小是提高下載速度最直接的方法。
1. 使用PNG8代替GIF(非動畫圖片),因為PNG8在效果一樣的情況,圖片大小比GIF要小。

2. 用fireworks處理PNG圖片,在我們產品中很多PNG圖片是美工直接用photoshop導出的,
后來讓美工用fireworks處理PNG(大概的方式是選擇保存為PNG8,刪除背景色)。
處理后100K的圖片大小基本減少了3/4,但圖片質量也會有少許降低,要看自己是否能接受。

3. 使用Smush.it(http://www.smushit.com/ysmush.it/)壓縮圖片,Smush.it是YUI團隊做1個在線壓縮圖片的網站,
該網站在不影響原圖片的質量下去掉圖片中一些元數(shù)據(jù),所以可以放心使用該網站進行壓縮,
但這個壓縮比例也是比較有限的。


二、合并圖片和拆分圖片

1. CSS Sprites合并圖片以減少請求數(shù)來提高性能大家都知道。但不要把圖片合并太多,太多太大了,
就會因為這1個圖片影響這個頁面的顯示了。

2. 有時候我們需要把1個大圖片拆分成多個小圖片,比如產品首頁圖片比較少,就1個很大的banner圖片,
因瀏覽器都可以并發(fā)下載圖片,所以如果不拆分,只使用1個大圖片的話,下載速度反而會比較慢


三、透明圖片處理

IE6不能顯示透明的PNG圖片,是很多開發(fā)人員特別頭疼的事,分別介紹下幾種方式的優(yōu)缺點。

1.使用AlphaImageLoader,IE6支持filter,使用下面的CSS代碼,可以讓IE6支持PNG
復制代碼 代碼如下:

#some-element {
background: url(image.png);
_background: none;
_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='image.png', sizingMethod='crop');
}

優(yōu)點:使用簡單
缺點:性能損耗很大,AlphaImageLoader會花費很多資源去處理透明圖片,使用AlphaImageLoader,IE使用內存會迅速上升。
而且AlphaImageLoader所有處理都在同1個線程中同步進行,所以當AlphaImageLoader多的時候,會阻塞UI的渲染。
使用_filter,IE7也可以識別,其實IE7是可以識別PNG透明圖片的,如果在IE7下使用上面代碼,IE7不會直接使用圖片,而是使用AlphaImageLoader。
注:個人建議盡量避免使用AlphaImageLoader

2. JS處理
使用DD_belatedPNG(http://www.dillerdesign.com/experiment/DD_belatedPNG/),可以很簡單的對界面上所有的透明圖片進行同一處理。
優(yōu)點:使用簡單(比AlphaImageLoader還簡單)
缺點:當頁面上需要處理的圖片比較多的時候,速度也比較慢,而且不能動態(tài)改變圖片。

3. VML
IE6支持VML,VML可以使用透明圖片,代碼如下:
修改html代碼頭部
html xmlns ="http://www.w3.org/1999/xhtml" xmlns:v >
head >
style type ="text/css" >
v\:* { behavior : url(#default#VML) ; }
span style="color: rgb(128, 0, 0);">style >
span style="color: rgb(128, 0, 0);">head >
body >
v:image src ="image.png" />
span style="color: rgb(128, 0, 0);">body >
span style="color: rgb(128, 0, 0);">html >


優(yōu)點:性能好,速度快
缺點:使用復雜,而且不支持firefox等瀏覽器,需要判斷不同的瀏覽器輸出不同的HTML代碼。

四、多域名下載圖片

因每個瀏覽器對同1個域名同時只能發(fā)送固定的請求,比如IE6好像是2個,所以可以對圖片資源開通多個域名進行請求,
比如img1.abc.com,img2.abc.com。但域名不要開啟太多,因為解析域名和打開新的連接都需要消耗時間,域名多了,說不定反而會更慢。一般2-4個域名就夠了。

五、IE6下緩存背景圖片

IE6背景圖片緩存是個麻煩事,很多人知道使用下面的JS來讓IE6緩存背景圖片
try{
document.execCommand("BackgroundImageCache", false, true);
}catch(e){}
但是這樣做的效果并不是非常好,當出現(xiàn)鼠標移動改變背景圖片的時候,IE6老是會發(fā)送1個圖片請求(盡管該背景圖片已經下載),
雖然返回結果是304,但還是要花費不少時間。在這種情況下,可以使用下面1個變通的方式來處理,
在頁面上直接使用1個DIV元素來加載該圖片,這樣加載圖片就能真正被緩存,鼠標移動也不會發(fā)送請求了。

六、預加載圖片

使用下面代碼可以在頁面加載完畢后預加載下1個頁面的圖片,當進入下1個頁面就不用再下載圖片了。
復制代碼 代碼如下:

window.onload=function(){
var img = new Image();
img.src = "images/image.png";
img = null;
};
您可能感興趣的文章:
  • android圖片壓縮的3種方法實例
  • android bitmap compress(圖片壓縮)代碼
  • PHP實現(xiàn)圖片壓縮的兩則實例
  • C#圖片壓縮的實現(xiàn)方法
  • java實現(xiàn)文件上傳下載和圖片壓縮代碼示例
  • Java 圖片壓縮實現(xiàn)思路及代碼
  • Android圖片壓縮上傳之基礎篇
  • css js 圖片壓縮批處理命令(基于YUI Compressor)
  • Android中3種圖片壓縮處理方法
  • java圖片壓縮工具類

標簽:河南 滄州 樂山 新疆 長治 紅河 沈陽 上海

巨人網絡通訊聲明:本文標題《高性能WEB開發(fā) 圖片壓縮篇》,本文關鍵詞  ;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    闸北区| 玉环县| 咸丰县| 清涧县| 古丈县| 巫溪县| 昭觉县| 乳山市| 武清区| 成都市| 新干县| 鸡泽县| 盐源县| 区。| 张北县| 平远县| 略阳县| 青河县| 东乌珠穆沁旗| 若尔盖县| 汉中市| 高雄县| 澜沧| 大姚县| 喀什市| 普兰县| 随州市| 北流市| 怀化市| 登封市| 两当县| 桃源县| 新河县| 察隅县| 通化县| 鲁甸县| 开原市| 濮阳县| 内江市| 伊吾县| 九龙城区|