当前位置: 首页 > 图文教程 > 网站运营 > 建站经验 > 对图片请求的处理上 Opera浏览器在前列

建站经验
11个PR7以上的国内网址导航站
国内现状 目前没几个博客能赚钱
网站推广最重要的2点 细节和坚持
给想通过博客赚钱的站长朋友的一些建议
网络推广经验 前期准备和发帖原则
盈利模式 细分市场是站长梦开始的地方
把握博客更新时间
总结网站推广中需要避免的12种推广方式
淘宝网店推广重点 抓住潜在的购买客户
建站杂谈 2010年web领域的预测
给用户一个无法拒绝的回访理由
建站案例 地方门户网站运营的心酸事
制作英文网站的基本流程
网站备案 图文教程
独立域名的英文博客从WordPress切换到Blogger的步骤
大胆尝试电子商务 改变传统盈利思路
404页面设计全攻略
以收购网站为名的商业间谍不可不防
运营企业网站来实现营销目标的经验
淘宝的站内搜索能改变搜索格局?

建站经验 中的 对图片请求的处理上 Opera浏览器在前列


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 42 ::
收藏到网摘: n/a

请在主流浏览器中打开测试页面,在Fiddler里查看http请求。

1. 隐藏图片

《img src=“1.jpg” style=“display: none” /》

测试:test_1.html

结论:只有Opera不产生请求。

注意:用visibility: hidden隐藏图片时,在Opera下也会产生请求。

2. 重复图片

《img src=“1.jpg” /》

《img src=“1.jpg” /》

测试:test_2.html

结论:所有浏览器都只产生一次请求。

3. 重复背景

《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》

测试:test_3.html

结论:所有浏览器都只产生一次请求。

4. 不存在的元素的背景

《style type=“text/css”》

.test1 { background: url(1.jpg) }

.test2 { background: url(2.jpg) } /* 页面中没有class为test2的元素 */

《/style》

《div class=“test1”》test1《/div》

测试:test_4.html

结论:背景仅在应用的元素在页面中存在时,才会产生请求。这对CSS框架来说,很有意义。

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》

测试:test_5.html

结论:Opera和Firefox对于用display: none隐藏的元素背景,不会产生HTTP请求。仅当这些元素非display: none时,才会请求背景图片。

6. 多重背景

《style type=“text/css”》

.test1 { background: url(1.jpg); }

.test1 { background: url(2.jpg); }

《/style》

《div class=“test1”》test1《/div》

测试:test_6.html

结论:除了基于webkit渲染引擎的Safari和Chrome,其它浏览器只会请求一张背景图。

注意:webkit引擎浏览器对背景图都请求,是因为支持CSS3中的多背景图。

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》

测试:test_7.html

结论:触发hover时,才会请求hover状态下的背景。这会造成闪烁,因此经常放在同一张背景图里通过翻转来实现。

注意:在图片no-cache的情况下,IE每次hover状态改变时,都会产生一次新请求。很糟糕。

8. JS里innerHTML中的图片

《script type=“text/javascript”》

var el = document.createElement(‘div’);

el.innerHTML = ‘《img src=“1.jpg” /》’;

//document.body.appendChild(el);

《/script》

测试:test_8.html

结论:只有Opera不会马上请求图片。

注意:当添加到DOM树上时,Opera才会发送请求。

9. 图片预加载

最常用的是JS方案:

《script type=“text/javascript”》

new Image().src = ‘1.jpg’;

new Image().src = ‘2.jpg’;

《/script》

在无JS支持的环境下,可以采用隐藏元素来预加载:

《img src=“1.jpg” style=“visibility: hidden; height: 0; width: 0” /》

测试:test_9.html

终于到总结了

对于隐藏图片和隐藏元素的背景,Opera不会产生请求。

对于隐藏元素的背景,Firefox也不会产生请求。

对于尚未插入DOM树的img元素,Opera不会产生请求。

基于webkit引擎的Safari和Chrome,支持多背景图。

其它情景,所有主流浏览器保持一致。

对图片请求的处理上,个人觉得Opera走在前列。

番外

1. 用Fiddler监控Opera时,如果是本地服务器,需要在Opera的代理服务器设置里,将本地服务器勾选上。

2. 查看HTTP请求数,还有一个万无一失的方法是,直接查看Apache的access.log文件。

3. 我的Firefox对于重复图片和重复背景,会产生重复请求。禁用了所有扩展,问题依旧。有知详情者,还望告知。( lifesinger)