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

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

 更新時間:2010年05月13日 23:59:16   作者:  
高性能WEB開發(fā) 圖片篇,圖片在一定的程度上,影響著頁面的加載速度。
一、縮小圖片大小

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

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

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


二、合并圖片和拆分圖片

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

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


三、透明圖片處理

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

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

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

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

2. JS處理
使用DD_belatedPNG(http://www.dillerdesign.com/experiment/DD_belatedPNG/),可以很簡單的對界面上所有的透明圖片進(jìn)行同一處理。
優(yōu)點(diǎn):使用簡單(比AlphaImageLoader還簡單)
缺點(diǎn):當(dāng)頁面上需要處理的圖片比較多的時候,速度也比較慢,而且不能動態(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)點(diǎn):性能好,速度快
缺點(diǎn):使用復(fù)雜,而且不支持firefox等瀏覽器,需要判斷不同的瀏覽器輸出不同的HTML代碼。

四、多域名下載圖片

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

五、IE6下緩存背景圖片

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

六、預(yù)加載圖片

使用下面代碼可以在頁面加載完畢后預(yù)加載下1個頁面的圖片,當(dāng)進(jìn)入下1個頁面就不用再下載圖片了。
復(fù)制代碼 代碼如下:

window.onload=function(){
var img = new Image();
img.src = "images/image.png";
img = null;
};

相關(guān)文章

  • windows下Git安裝教程(圖文)

    windows下Git安裝教程(圖文)

    這篇文章主要介紹了windows下Git安裝教程(圖文),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 如何給 GitHub commit 加個綠色圖標(biāo)(教程詳解)

    如何給 GitHub commit 加個綠色圖標(biāo)(教程詳解)

    這篇文章主要介紹了如何給 GitHub commit 加個綠色圖標(biāo),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 編程人員閱讀代碼的一些小技巧分享

    編程人員閱讀代碼的一些小技巧分享

    閱讀別人的代碼作為研發(fā)人員是一件經(jīng)常要做的事情。一個是學(xué)習(xí)新的編程語言的時候通過閱讀別人的代碼是個最佳的學(xué)習(xí)方法,另外是積累編程經(jīng)驗(yàn)。
    2011-01-01
  • 十分鐘內(nèi)學(xué)會 避免用戶刷新導(dǎo)致重復(fù)POST提交

    十分鐘內(nèi)學(xué)會 避免用戶刷新導(dǎo)致重復(fù)POST提交

    在Web應(yīng)用中,采用POST提交信息是非常常見的,然而如果目標(biāo)頁面打開得太慢,用戶就可能會刷新頁面,這時候之前已經(jīng)提交過的信息就會被重復(fù)提交。
    2009-08-08
  • 架構(gòu)與思維論設(shè)計(jì)容量的重要性

    架構(gòu)與思維論設(shè)計(jì)容量的重要性

    這篇文章主要為大家介紹了架構(gòu)與思維中論設(shè)計(jì)容量的重要性詳細(xì)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-01-01
  • nacos?2.1.0集群多節(jié)點(diǎn)部署最新詳細(xì)教程

    nacos?2.1.0集群多節(jié)點(diǎn)部署最新詳細(xì)教程

    這篇文章主要介紹了全網(wǎng)最新的nacos?2.1.0集群多節(jié)點(diǎn)部署教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Git忽略提交的3種方法及Git忽略規(guī)則

    Git忽略提交的3種方法及Git忽略規(guī)則

    在使用Git的過程中,我們喜歡有的文件比如日志,臨時文件,編譯的中間文件等不要提交到代碼倉庫,這時就要設(shè)置相應(yīng)的忽略規(guī)則今天為大家簡單介紹下Git的忽略及規(guī)則
    2018-10-10
  • Git中bundle命令的使用詳解

    Git中bundle命令的使用詳解

    這篇文章主要介紹了Git中bundle命令的使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • Visual Studio和Visual Studio Code之間有什么區(qū)別

    Visual Studio和Visual Studio Code之間有什么區(qū)別

    本文給大家介紹的是Visual Studio和Visual Studio Code之間有什么區(qū)別,希望對大家的學(xué)習(xí)能夠有所幫助
    2020-02-02
  • VsCode配置ssh免密遠(yuǎn)程連接服務(wù)器的實(shí)現(xiàn)步驟

    VsCode配置ssh免密遠(yuǎn)程連接服務(wù)器的實(shí)現(xiàn)步驟

    現(xiàn)在,可以在VSCode中直接通過SSH連接到服務(wù)器,而無需每次輸入密碼,本文主要介紹了VsCode配置ssh免密遠(yuǎn)程連接服務(wù)器的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08

最新評論

定西市| 马鞍山市| 丹凤县| 策勒县| 桐城市| 湖州市| 钦州市| 江津市| 正宁县| 尉氏县| 改则县| 仁化县| 孝义市| 平潭县| 池州市| 丰台区| 洪江市| 嘉荫县| 三江| 封丘县| 盐山县| 上饶县| 修水县| 剑川县| 新绛县| 招远市| 阿克| 黎平县| 沙河市| 青铜峡市| 滁州市| 桃源县| 图木舒克市| 菏泽市| 措美县| 镇雄县| 宜城市| 攀枝花市| 旬阳县| 本溪市| 紫阳县|