實(shí)測(cè)圖片的HTTP請(qǐng)求

請(qǐng)?jiān)谥髁鳛g覽器中打開(kāi)測(cè)試頁(yè)面,在Fiddler里查看http請(qǐng)求。
1. 隱藏圖片
<img src="1.jpg" style="display: none" />測(cè)試:test_1.html
結(jié)論:只有Opera不產(chǎn)生請(qǐng)求。
注意:用visibility: hidden隱藏圖片時(shí),在Opera下也會(huì)產(chǎn)生請(qǐng)求。
2. 重復(fù)圖片
<img src="1.jpg" /><img src="1.jpg" />測(cè)試:test_2.html
結(jié)論:所有瀏覽器都只產(chǎn)生一次請(qǐng)求 。
3. 重復(fù)背景
<style type="text/css"> .test1 { background: url(1.jpg) } .test2 { background: url(1.jpg) }</style><div class="test1">test1</div><div class="test2">test2</div>測(cè)試:test_3.html
結(jié)論:所有瀏覽器都只產(chǎn)生一次請(qǐng)求。
4. 不存在的元素的背景
<style type="text/css"> .test1 { background: url(1.jpg) } .test2 { background: url(2.jpg) } /* 頁(yè)面中沒(méi)有class為test2的元素 */</style><div class="test1">test1</div>測(cè)試:test_4.html
結(jié)論:背景僅在應(yīng)用的元素在頁(yè)面中存在時(shí),才會(huì)產(chǎn)生請(qǐng)求。這對(duì)CSS框架來(lái)說(shuō),很有意義。
5. 隱藏元素的背景
<style type="text/css"> .test1 { background: url(1.jpg); display: none; } .test2 { background: url(2.jpg); visibility: hidden; }</style><div class="test1">test1</div>測(cè)試:test_5.html
結(jié)論:Opera和Firefox對(duì)于用display: none隱藏的元素背景,不會(huì)產(chǎn)生HTTP請(qǐng)求。僅當(dāng)這些元素非display: none時(shí),才會(huì)請(qǐng)求背景圖片。
6. 多重背景
<style type="text/css"> .test1 { background: url(1.jpg); } .test1 { background: url(2.jpg); }</style><div class="test1">test1</div>測(cè)試:test_6.html
結(jié)論:除了基于webkit渲染引擎的Safari和Chrome,其它瀏覽器只會(huì)請(qǐng)求一張背景圖。
注意:webkit引擎瀏覽器對(duì)背景圖都請(qǐng)求,是因?yàn)橹С諧SS3中的多背景圖。
7. hover的背景加載
<style type="text/css"> a.test1 { background: url(1.jpg); } a.test1:hover { background: url(2.jpg); }</style><a href="#" class="test1">test1</a>測(cè)試:test_7.html
結(jié)論:觸發(fā)hover時(shí),才會(huì)請(qǐng)求hover狀態(tài)下的背景。這會(huì)造成閃爍,因此經(jīng)常放在同一張背景圖里通過(guò)翻轉(zhuǎn)來(lái)實(shí)現(xiàn)。
注意:在圖片no-cache的情況下,IE每次hover狀態(tài)改變時(shí),都會(huì)產(chǎn)生一次新請(qǐng)求。很糟糕。
2009-05-13晚補(bǔ)充:上面的解釋有誤,更詳細(xì)的解釋請(qǐng)參考續(xù)篇。翻轉(zhuǎn)技巧指的是Sprite技術(shù),例子:test_7b.html, 在ie6下不會(huì)產(chǎn)生閃爍。
8. JS里innerHTML中的圖片
<script type="text/javascript"> var el = document.createElement('div'); el.innerHTML = '<img src="1.jpg" />'; //document.body.appendChild(el);</script>測(cè)試:test_8.html
結(jié)論:只有Opera不會(huì)馬上請(qǐng)求圖片。
注意:當(dāng)添加到DOM樹(shù)上時(shí),Opera才會(huì)發(fā)送請(qǐng)求。
9. 圖片預(yù)加載
最常用的是JS方案:
<script type="text/javascript"> new Image().src = '1.jpg'; new Image().src = '2.jpg';</script>在無(wú)JS支持的環(huán)境下,可以采用隱藏元素來(lái)預(yù)加載:
<img src="1.jpg" style="visibility: hidden; height: 0; width: 0" />測(cè)試:test_9.html
終于到總結(jié)了
1.對(duì)于隱藏圖片和隱藏元素的背景,Opera不會(huì)產(chǎn)生請(qǐng)求。
2.對(duì)于隱藏元素的背景,F(xiàn)irefox也不會(huì)產(chǎn)生請(qǐng)求。
3.對(duì)于尚未插入DOM樹(shù)的img元素,Opera不會(huì)產(chǎn)生請(qǐng)求。
4.基于webkit引擎的Safari和Chrome,支持多背景圖。
5.其它情景,所有主流瀏覽器保持一致。
對(duì)圖片請(qǐng)求的處理上,個(gè)人覺(jué)得Opera走在前列。
番外
1. 用Fiddler監(jiān)控Opera時(shí),如果是本地服務(wù)器,需要在Opera的代理服務(wù)器設(shè)置里,將本地服務(wù)器勾選上。
2. 查看HTTP請(qǐng)求數(shù),還有一個(gè)萬(wàn)無(wú)一失的方法是,直接查看Apache的access.log文件。
3. 我的Firefox對(duì)于重復(fù)圖片和重復(fù)背景,會(huì)產(chǎn)生重復(fù)請(qǐng)求。禁用了所有擴(kuò)展,問(wèn)題依舊。有知詳情者,還望告知。
相關(guān)文章
15 個(gè)為編程初學(xué)者準(zhǔn)備的網(wǎng)站(都是國(guó)外的一些網(wǎng)站)
今天的文章,我們將分享15個(gè)可以學(xué)習(xí)編程的網(wǎng)站,這些網(wǎng)站上提供了很多編程教程,圖書以及編程練習(xí),希望對(duì)你有用2024-11-02web開(kāi)發(fā)中的長(zhǎng)度單位小結(jié)
這篇文章主要介紹了web開(kāi)發(fā)中的長(zhǎng)度單位主要包括px,pt,em等,需要的朋友可以參考下2023-08-06網(wǎng)頁(yè)前端開(kāi)發(fā)的一些尺寸單位(px,rem單位)
px單位是絕對(duì)單位,一般用于pc端網(wǎng)頁(yè)開(kāi)發(fā),因?yàn)槭墙^對(duì)單位所以在移動(dòng)端上的使用體驗(yàn)并不是很好,rem它是描述相對(duì)于當(dāng)前根元素字體尺寸,是相對(duì)單位,它可以根據(jù)根元素的變換而2023-08-06WEB前端優(yōu)化必備js/css壓縮工具YUI-compressor詳解與集成用法
壓縮工具層次不窮,各有優(yōu)點(diǎn),選擇適合的壓縮工具為將來(lái)做項(xiàng)目開(kāi)發(fā)使用是一件很重要的事情!!在這介紹YUI-compressor,需要的朋友可以參考下2023-06-21html,css,javascript是怎樣變成頁(yè)面的
瀏覽器是多進(jìn)程的,有瀏覽器主進(jìn)程,網(wǎng)絡(luò)進(jìn)程,渲染進(jìn)程,插件進(jìn)程等,在將html,css,javascript解析成一個(gè)頁(yè)面的時(shí)候,就需要多個(gè)進(jìn)程的分工合作2023-05-01- 本文為大家整理了常用的文件對(duì)應(yīng)的MIME類型,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-25
postman中form-data、x-www-form-urlencoded、raw、binary的區(qū)別介紹
這篇文章介紹了postman中form-data、x-www-form-urlencoded、raw、binary的區(qū)別,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-12-28網(wǎng)頁(yè)中使用Unicode字符的介紹(&#,\u等)
國(guó)際組織制定了可以容納世界上所有文字和符號(hào)的字符編碼方案,稱為Unicode,是通用字符集Universal Character Set的縮寫,用以滿足跨語(yǔ)言、跨平臺(tái)進(jìn)行文本轉(zhuǎn)換、處理的要求2021-11-27前端實(shí)現(xiàn)字符串GBK與GB2312的編解碼(小結(jié))
這篇文章主要介紹了前端實(shí)現(xiàn)字符串GBK與GB2312的編解碼(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2020-12-02告別硬編碼讓你的前端表格自動(dòng)計(jì)算的實(shí)例代碼
這篇文章主要介紹了告別硬編碼讓你的前端表格自動(dòng)計(jì)算,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-27