欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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


二、合并圖片和拆分圖片

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

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


三、透明圖片處理

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

2. JS處理
使用DD_belatedPNG(http://www.dillerdesign.com/experiment/DD_belatedPNG/),可以很簡(jiǎn)單的對(duì)界面上所有的透明圖片進(jìn)行同一處理。
優(yōu)點(diǎn):使用簡(jiǎn)單(比AlphaImageLoader還簡(jiǎn)單)
缺點(diǎn):當(dāng)頁(yè)面上需要處理的圖片比較多的時(shí)候,速度也比較慢,而且不能動(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代碼。

四、多域名下載圖片

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

五、IE6下緩存背景圖片

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

六、預(yù)加載圖片

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

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

相關(guān)文章

  • 在 git 中取消 __pycache__ 文件的方法

    在 git 中取消 __pycache__ 文件的方法

    _pycache__ 文件夾是 Python 編譯器用來(lái)存放編譯后的 Python 文件的,在項(xiàng)目中不需要提交這些文件,因?yàn)樗鼈兛梢酝ㄟ^(guò)編譯源代碼重新生成,這篇文章主要介紹了如何在 git 中取消 __pycache__ 文件,需要的朋友可以參考下
    2023-01-01
  • VSCode 如何隱藏側(cè)邊欄文件或文件夾

    VSCode 如何隱藏側(cè)邊欄文件或文件夾

    開(kāi)發(fā)時(shí)有些文件根部就會(huì)動(dòng),可能是運(yùn)行的環(huán)境或者緩存,可能是其他的文件,但是又不能刪除,影響開(kāi)發(fā)的觀感,那么怎么在側(cè)邊欄欄隱藏文件呢,下面小編給大家分享VSCode 如何隱藏側(cè)邊欄文件或文件夾,感興趣的朋友一起看看吧
    2024-03-03
  • 詳細(xì)HTTP協(xié)議的前世今生

    詳細(xì)HTTP協(xié)議的前世今生

    超文本傳輸協(xié)議(Hypertext Transfer Protocol,HTTP)是一個(gè)簡(jiǎn)單的請(qǐng)求-響應(yīng)協(xié)議,它通常運(yùn)行在TCP之上。它指定了客戶(hù)端可能發(fā)送給服務(wù)器什么樣的消息以及得到什么樣的響應(yīng)。請(qǐng)求和響應(yīng)消息的頭以ASCII形式給出;而消息內(nèi)容則具有一個(gè)類(lèi)似MIME的格式
    2021-06-06
  • 如何讓vsCode顯示中文界面

    如何讓vsCode顯示中文界面

    vscode默認(rèn)的語(yǔ)言是英文,這給使用者帶來(lái)了一定的挑戰(zhàn),現(xiàn)在小編就來(lái)告訴你如何將vscode設(shè)置成中文。
    2020-01-01
  • 架構(gòu)思維之緩存雪崩的災(zāi)難復(fù)盤(pán)

    架構(gòu)思維之緩存雪崩的災(zāi)難復(fù)盤(pán)

    這篇文章主要介紹了架構(gòu)思維中一次緩存雪崩的災(zāi)難復(fù)盤(pán)真實(shí)案例的分享,希望可以對(duì)大家在工作中有所啟發(fā),祝大家多多進(jìn)步早日升職加薪
    2022-01-01
  • 進(jìn)制轉(zhuǎn)換基礎(chǔ)

    進(jìn)制轉(zhuǎn)換基礎(chǔ)

    很多年前大學(xué)里學(xué)過(guò)的進(jìn)制轉(zhuǎn)換還是挺簡(jiǎn)單的,沒(méi)想到多年不用了,都忘了,剛好看到這篇文章,特分享下,方便需要的朋友
    2013-02-02
  • 多種編程語(yǔ)言的常用按鍵和語(yǔ)法

    多種編程語(yǔ)言的常用按鍵和語(yǔ)法

    就我所知道的語(yǔ)言來(lái)說(shuō),在鍵盤(pán)上集中分布跨度更大的語(yǔ)音,通常就是我們所指的丑陋的語(yǔ)言(閱讀和編寫(xiě)代碼都很困難),例如 shell 和 perl。
    2011-10-10
  • gb2312的詳細(xì)介紹

    gb2312的詳細(xì)介紹

    gb2312的詳細(xì)介紹,需要的朋友可以參考一下
    2013-03-03
  • 前端開(kāi)發(fā)工具nvim替帶VSCode的安裝配置

    前端開(kāi)發(fā)工具nvim替帶VSCode的安裝配置

    這篇文章主要為大家介紹了一款前端開(kāi)發(fā)工具nvim代替VSCode的配置使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 2019最新的Pycharm激活碼(推薦)

    2019最新的Pycharm激活碼(推薦)

    PyCharm 是一款功能強(qiáng)大的 Python 編輯器,具有跨平臺(tái)性。這篇文章給大家介紹2019最新的Pycharm激活碼,需要的朋友一起看看吧
    2019-10-10

最新評(píng)論