如何减少图片HTTP请求
2019-08-14 09:38:40来源:爱站网 阅读 ()
若是页面图片在没有任何方案的情况下五个图片链接就会有五个图标按钮,我们应该如何减少图片HTTP请求呢?现在我们就带着这个疑问去看看下面的内容吧。
代码如下:
?
<div style="border: 2px ridge rgb(51, 51, 51); background-color: rgb(244, 245, 235); width: 200px; padding-top: 4px;">
<center>
<a href="javascript:alert('Home')" title="Home"><img src="images/home.gif" border="0"></a> <a href="javascript:alert('Gift')" title="Gift"><img src="images/gift.gif" border="0"></a>
<a href="javascript:alert('Cart')" title="Cart"><img src="images/cart.gif" border="0"></a>
<a href="javascript:alert('Settings')" title="Settings"><img src="images/settings.gif" border="0"></a>
<a href="javascript:alert('Help')" title="Help"><img src="images/help.gif" border="0"></a>
</center>
</div>
注意:这五个按钮分别使用了五张图片
那么,五张图片就意味着你的该页面又多了五个HTTP请求,它将大大降低页面的呈现效率。增加的HTTP请求是导致页面性能下降的最大刽子手,所以我们应该尽量减少HTTP请求,而图片是增加HTTP请求的最大可能者,搞定它,事不宜迟!呵呵^_^
下面列出了三种解决方案:
方案一:图片地图(图像热点):它将用户的点击映射到一个操作,而无需向后端Web服务器发送任何请求。
代码如下:
?
?
?
?
<div class="panel_div" style="border:2px ridge #333333;background-color:rgb(244, 245, 235);width:180px;padding:4px 0px 0px 2px;">
<img usemap="#mymap" src="images/imagemap.gif" border="0" />
<map name="mymap"> <!-- img使用的map -->
<area shape="rect" coords="0,0,31,31" href="javascript:alert('Home');"/>
<area shape="rect" coords="36,0,66,31" href="javascript:alert('Gifts');"/>
<area shape="rect" coords="71,0,101,31" href="javascript:alert('Cart')"/>
<area shape="rect" coords="106,0,136,31" href="javascript:alert('Set')"/>
<area shape="rect" coords="141,0,171,31" href="javascript:alert('Help')"/>
</map>
</div>
注意:这五个按钮其实是在一张图片中
方案二:CSS Sprites:使用这种方式也可以将五张图片合并为一张图片,并且更为灵活。
代码如下:
?
?
?
?
<style>
/* 对div中所有span的样式设置 */
#navbar span {
/* 定义<span>标签将截取的图片宽度和高度 */
width:30px; height:31px;
/* 添加包含了所有图标的图片 */
background-image:url(images/imagemap.gif);
display:inline; float:left;
}
/* background-position:指定图标在CSS Sprites图片的偏移量
margin-left 和 margin-right 则用来定位图标位置
*/
.home { background-position:0 0; margin-left:2px;}
.gifts { background-position:-35px 0; margin-left:50px;}
.cart { background-position:-70px 0; margin-left:120px;}
</style>
<div id="navbar" style="border: 2px ridge rgb(51, 51, 51); padding: 4px 0pt; background-color:#ff0; width: 300px; height: 32px;">
<a href="javascript:alert('Home')" title="Home">
<span class="home"></span></a> <!-- 注意:该span标签用来加载图片 -->
<a href="javascript:alert('Gifts')" title="Gifts">
<span class="gifts"></span></a> <!-- 注意:该span标签用来加载图片 -->
<a href="javascript:alert('Cart')" title="Cart">
<span class="cart"></span></a> <!-- 注意:该span标签用来加载图片 -->
</div>
?
注意:在这个“CSS Sprites”中用到的图片就是“图片地图”中的同一张图片。(并特地只显示其中的三个图标)
CSS Sprites的原理:只是定位到图片其中的一块区域,并显示在某个位置而已。
CSS Sprites的优点:通过只使用一个图片减少了HTTP请求,并且比“图片地图”更灵活。
很多人会误认为:合并的图片要比分离的图片的总和要大,因为合并的图片中包含有附加的空白区域。
实际上,合并的图片要比分离的图片的总和要小,这是因为它降低了图片自身的开销(颜色表、格式信息,等等)。
方案三:内联图片:通过使用data: URL模式在Web页面中包含图片,且无需任何额外的HTTP请求。(IE目前不支持)
1、内联图片的原理:允许将小块数据内联为‘立即数(immediate data)’,数据就包含在其URL自身之中。
2、内联图片的格式:data:[<mediatype>][;base64],<data>
举例:一个内联图片可以定义为
<img src="data:image/gif;base64,asdfghjklaasdvdddddddaaaaaddddd++ddd======ssswdvdv33" >
其中“asdfghjklaasdvdddddddaaaaaddddd++ddd======ssswdvdv33”就是该图片的数据。
data: URL模式-> 基本用于内联图片,可以用在任何需要指定URL的地方,如:script和a标签中。
3、内联图片的缺陷:
a> 不受IE的支持(IE7也如此);
b> 保存数据的大小上受限制(Firefox 1.5支持高达100KB的数据);
c> Base64编码会增加其图片的大小;
d> 在跨越不同页面时不会被缓存
(可以将内联图片作为背景图片保存在外部CSS样式表中来解决此问题,但会增加一个HTTP请求以换得数据被缓存的结果。);
本人推荐:根据具体情况,使用方案一:图片地图(图像热点)或方案二:CSS Sprites。
以上就是如何减少图片HTTP请求的内容,如果有疑问大家可以留言交流,谢谢大家对爱站技术频道的支持!
原文链接:https://js.aizhan.com/web_authoring/css/6725.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:条件CSS的使用方法
下一篇:web开发中css书写规范的方法
- 如果是自学WEB前端的话,该如何才能找到一份7K实习生工作呢 2020-06-04
- 前端如何学习? 2020-06-04
- 如何成为一名优秀的web前端工程师 2020-06-02
- 零基础小白转行如何入门学习web前端 2020-06-01
- css:背景(背景颜色、图片、平铺、背景固定、背景颜色半透 2020-06-01
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash