图像合并实现CSS Sprites图像合并其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS 的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片的位置 。
一个页面要用到多个图标,完全可以将多个图标合并成一个图,然后只需要发一次图片请求,通过css定位分割图标即可 。
避免使用Iframe使用iframe并不会增加同域名下的并行下载数,浏览器对同域名的连接总是共享浏览器级别的连接池,在页面加载过程中iframe元素还会阻塞父文档onload事件的触发 。并且iframe是html标签中最消耗资源的标签,它的开销比DIV、SCRIPT、STYLE等DOM高1~2个数量级 。
避免onload事件被阻塞,可使用JavaScript动态的加载iframe元素或动态设置iframe的src属性(但其仅在高级浏览器IE9及以上有效) 。
<iframe id="if"></iframe>document.getElementById("if").setAttribute("src","url");多域名请求一般来说,浏览器对于相同域名的图片,最多用2-4个线程并行下载(不同浏览器的并发下载数是不同的) 。而相同域名的其他图片,则要等到其他图片下载完后才会开始下载 。
有时候,图片数据太多,一些公司的解决方法是将图片数据分到多个域名的服务器上,这在一方面是将服务器的请求压力分到多个硬件服务器上,另一方面,是利用了浏览器的特性 。(大家可以去新浪、腾讯门户网站查看,这些大型站点同一页面加载的图片可能由多个站点提供)
注:一个HTML请求的域名也不要太多(2~3个差不多),多了可能造成不同服务器连接时间差异,反而影响速度 。
避免空链接属性如<img src=https://www.isolves.com/it/cxkf/yy/html5/2019-08-09/"">这样的设置方式是非常不可取的,即使链接为空,在旧的浏览器也会以固定步骤发送请求信息 。
另外<a href="#"></a>也不可取,最好的方式是在链接中加一个空的js代码<a href="javascript:void();"></a>
使用图像的BASE64编码base64是一串字符串,他可以代表一个图片的所有信息,也就是可以通过
(S表示一串base64码)来显示图片,这种方式不需要再向服务器发送请求,完全由浏览器解析成图片 。
目前高级浏览器都支持此功能,但要注意两点:
显式设置图片的宽高如果HTML里的图片没有指定尺寸(宽和高),或者代码描述的尺寸与实际图片的尺寸不符时,浏览器则要在图片下载完成后再“回溯”该图片并重新显示,这会消耗额外时间 。
<iframe id="if"></iframe>document.getElementById("if").setAttribute("src","url");显式指定文档字符集如果浏览器不能获知页面的编码字符集,一般都会在执行脚本和渲染页面前,把字节流缓存,然后再搜索可进行解析的字符集,或以默认的字符集来解析页面代码,这会导致消耗不必要的时间 。
<iframe id="if"></iframe>document.getElementById("if").setAttribute("src","url");渐进式增强设计渐进式增强设计的通俗解释就是:首先写一段满足所有浏览器的基本样式,再在后面针对不同高级浏览器编写更漂亮的样式
如下代码,所有浏览器都支持background-color: #2067f5;满足了浏览器基本现实需求,而后面的background-image: -webkit-gradient等则为不同高级浏览器使用,只要浏览器识别就能执行这段代码(不识别,CSS也不会报错只会直接忽略) 。
<div class="someClass"></div> .someClass { width: 100px;height: 100px;background-color: #2067f5;background-image: -webkit-gradient(linear, left top, left bottom, from(#2067f5), to(#154096));background-image: -webkit-linear-gradient(top, #2067f5, #154096);background-image: -moz-linear-gradient(top, #2067f5, #154096);background-image: -ms-linear-gradient(top, #2067f5, #154096);background-image: -o-linear-gradient(top, #2067f5, #154096);background-image: linear-gradient(to bottom, #2067f5, #154096); }懒加载与预加载预加载和懒加载,是一种改善用户体验的策略,它实际上并不能提高程序性能,但是却可以明显改善用户体验或减轻服务器压力 。
预加载表示当前用户在请求到需要的数据之后,页面自动预加载下一次用户可能要看的数据,这样用户下一次操作的时候就立刻呈现,依次类推 。
推荐阅读
- 网站内链的表达形式
- 吕布被张飞骂作三姓家奴说他三姓是因为什么
- 喝茶为什么会出现酸甜苦涩
- 淘宝降权订单删除会怎么样 淘宝单为什么会降权
- 李靖为什么封神了 李靖封神榜中为什么没有
- 人死后身体为什么不能触碰? 为什么不能摸死人的手
- 吸血树真的存在吗 吸血树为什么会吸血
- 人为什么会得病?早一天看到,多一份健康
- 为什么饮茶能够养生明目
- 喝海水为什么会脱水 脱水为什么不能喝海水