web前端图片预加载
是什么?
浏览器会缓存静态资源(hmtl/css/img等)。图片预加载就是让浏览器提前缓存图片,提升用户体验。
浏览器什么情况下会下载图片?
1,解析到html中img的src属性的时候
2,解析到background-image属性的url()的时候
3,在js中创建Image对象的之后给他的src属性赋上一个url之后浏览器就会发出请求。html中的img标签本质就是Image对象。html中每出现一个img标签,就有一个Image对象被创建。
// html
<img src="https://www.xxx.com/static/img/xxx.png" alt="">
// css
background:url('./src/static/images/goods1.png')
// js 在js中创建Image对象后给它赋上src属性的时候浏览器也会下载src指向的资源。
new Image().src = "https://www.xxx.com/static/img/xxx.png"
在哪里个阶段使用预加载?
反思:浏览器拿到一个HTML的时候第一件事情就是创建document对象然后解析HTML标签生成DOM树,当他解析到img标签的src属性的时候会立即向src指向的地址发出请求。这就代表我们定义在一个页面当中的img在页面初始的时候原本就会被统统下载。那我们为什么还要去自己下载这些图片?
结论:在index.html下载其他页面中需要用到的图片。
什么场景需要使用预加载?
像xx公司官方网站,这种展示类的页面中一般会有用于展示实力的比较大的轮播图和背景图。把这些图片提前下载下来,就能避免页面打开半天都是白茫茫的一片。
实现方式
实现预加载要做的只有一件事情,那就是在用到图片之前让浏览器提前缓存图片。
通过html:在index页面末尾定义多个img标签,达到提前下载的目的。
// 批量定义要下载的图片资源,定义display 阻止他们渲染到页面
<img src="xxx.xxx.xxx/static/img/xx1.xxx" style="display: none">
<img src="xxx.xxx.xxx/static/img/xx2.xxx" style="display: none">
<img src="xxx.xxx.xxx/static/img/xx3.xxx" style="display: none">
通过css:在css文件中通过background-image属性批量下载图片
<div id="preload" style="display:none"></div>
#preload{
// url中的图片会依次次请求过来。
background:url('./src/static/images/goods1.png');
background:url('./src/static/images/goods2.png');
background:url('./src/static/images/goods3.png');
}
通过js:批量创建Image对象,为它们的src属性赋上我们需要下载的图片URL
小结:
图片预加载的本质:让浏览器提前缓存之后要用到的图片。
好处:增强用户体验。
坏处:不管用不用的上都会吃用户流量,密集的下载会对服务器造成一定压力。
web前端图片预加载的更多相关文章
- Javascript图片预加载详解
预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...
- 利用CSS、JavaScript及Ajax实现图片预加载的三大方法
预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...
- 图片预加载和AJAX的图片预加载
利用js实现图片预加载,加载所需要图片的路径与名称即可,很容易实现,该方法尤其适用预加载大量的图片: <div class="hidden"> <script t ...
- 利用CSS、JavaScript及Ajax实现图片预加载的三大方法(转)
预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...
- JQ封装图片预加载插件
我们知道,图片的加载,特别是资源较大的图片,加载相当耗费时间.为了提高用户体验,不得不使用图片预加载技术来提前加载,以提高用户在浏览时的流畅度. 先来弄明白图片的懒加载和预加载的不同: 1)概念:懒加 ...
- js图片预加载与延迟加载
图片预加载的机制原理:就是提前加载出图片来,给前端的服务器有一定的压力. 图片延迟加载的原理:为了缓解前端服务器的压力,延缓加载图片,符合条件的时候再加载图片,当然不符合的条件就不加载图片. 预加载 ...
- Javascript图片预加载详解 分类: JavaScript HTML+CSS 2015-05-29 11:01 768人阅读 评论(0) 收藏
预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...
- 利用CSS、JavaScript及Ajax实现图片预加载的三大方法及优缺点分析
预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...
- 再谈javascript图片预加载技术
图片预加载技术的典型应用: 如lightbox方式展现照片,无疑需要提前获得大图的尺寸,这样才能居中定位,由于javascript无法获取img文件头数据,必须等待其加载完毕后才能获取真实的大小然后展 ...
随机推荐
- ThinkPHP中$map用法
ThinkPHP内置了非常灵活的查询方法,可以快速的进行数据查询操作,查询条件可以用于CURD等任何操作,作为where方法的参数传入即可,下面来一一讲解查询语言的内涵. 查询方式ThinkPHP可以 ...
- Variable 'bop' is uninitialized when captured by block
代码: - (void)doTest { NSBlockOperation * bop = [NSBlockOperation blockOperationWithBlock:^{ if (!bop. ...
- HDU 5289 Assignment(多校联合第一场1002)
Assignment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- UUID GUID
http://baike.baidu.com/link?url=xkck9gR5bzOx0oBKP1qNJwGGq3IO56V4i8cg9zTSpSDMVBMA0F7jr0AdkQTGyk7F0FGj ...
- 使用 C# 开发智能手机软件:推箱子(四)
这是"使用 C# 开发智能手机软件:推箱子"系列文章的第四篇. 在这篇文章中,介绍 Common/FindPath.cs 源程序文件. using System; using Sy ...
- C#高阶与初心:(二)P/Invoke平台调用
最近某个项目要采集交易终端的信息用于监管,主要厂商给出了API,C++版的...开启hard模式!!! C#调用C++的DLL基本就两种方法:加一个VC++项目包一层,或者使用P/Invoke(平台调 ...
- Linux 及 CentOS系统安装
VMware与Centos系统安装 今日任务 .Linux发行版的选择 .vmware创建一个虚拟机(centos) .安装配置centos7 .xshell配置连接虚拟机(centos) 选择性 ...
- 数据库连接池-配置 wallfilter
使用缺省配置的WallFilter <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSou ...
- 利用Python3的dpkt库进行ARP扫描
背景 正在学习网络协议,用Python写起来方便点,可以快速熟悉协议本身,也给自己补充一些Python库. 偶然看到这篇文章,讲的是Python发ARP包,发现是Python2的,这里改了一下,用Py ...
- Linux 高精度定时器hrtimer 使用示例【转】
本文转载自:http://blog.csdn.net/dean_gdp/article/details/25481225 hrtimer的基本操作 Linux的传统定时器通过时间轮算法实现(timer ...