HTML5 预加载让页面得以快速呈现


Posted in HTML / CSS onAugust 13, 2013

浏览器厂商和开发者之间共同努力的一个方向就是让网站更快。现在已有很多广为人知的加速解决方案:CSS sprites(CSS精灵,拼图)以及图像优化,分布式配置文件(.htaccess),JS/文本文件压缩,CDN加速等。

我在另一篇博文中介绍了 如何让网站更快。
FireFox推介一种新的网站加速策略: 链接预加载。什么是链接预加载?MDN描述如下:

预加载是一种浏览器机制,使用浏览器空闲时间来预先下载/加载用户接下来很可能会浏览的页面/资源。页面提供给浏览器需要预加载的集合。浏览器载入当前页面完成后,将会在后台下载需要预加载的页面并添加到缓存中。当用户访问某个预加载的链接时,如果从缓存命中,页面就得以快速呈现。

简单概述:网站根据用户分析,让浏览器后台下载指定页面/文档/图片,实现起来超easy:

HTML5预加载标签

复制代码
代码如下:

<!-- 页面,可以使用绝对或者相对路径 -->
<link rel="prefetch" href="page2.html" />
<!-- 图片,也可以是其他类型的文件 -->
<link rel="prefetch" href="sprite.png" />

从上面的HTML代码可以看出,预加载使用 <link> 标签,并指定 rel="prefetch" 属性,而href属性就是需要预加载的文件路径。而Mozilla还实现了一些类似的 link rel 属性:

复制代码
代码如下:

<link rel="prefetch alternate stylesheet" title="Designed for Mozilla" href="mozspecific.css" />
<link rel="next" href="2.html" />

备注: https 协议也同样支持。

何时需要预加载
网站是否采用预加载取决于你的需求,下面是一些建议:
- 如果一系列的页面幻灯片一样展示,那么可以预加载前后各1至3个页面.
- 加载网站内部通用的图片
- 在搜索结果页预加载下一页

阻止预加载
Firefox 允许禁止预加载模式,代码如下:

复制代码
代码如下:

user_pref("network.prefetch-next", false);

注意事项
关于链接预加载,有如下注意事项:
- 预加载可以跨域进行,当然,请求时cookie等信息也会被发送。
- 预加载可能破坏网站统计数据,而用户并没有实际访问。
- Mozilla Firefox 是目前唯一支持预加载模式的浏览器,(2003-2010)
你怎么认为呢?使用空闲时间下载额外的文件属于一种激进的优化
HTML / CSS 相关文章推荐
移动Web—CSS为Retina屏幕替换更高质量的图片
Dec 24 HTML / CSS
CSS3近阶段篇之酷炫的3D旋转透视
Apr 28 HTML / CSS
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
Sep 10 HTML / CSS
基于HTML5的WebSocket的实例代码
Aug 15 HTML / CSS
突破canvas语法限制 让他支持链式语法
Dec 24 HTML / CSS
HTML5画渐变背景图片并自动下载实现步骤
Nov 18 HTML / CSS
html5实现canvas阴影效果示例
May 07 HTML / CSS
用HTML5实现鼠标滚轮事件放大缩小图片的功能
Jun 25 HTML / CSS
HTML5 画布canvas使用方法
Mar 18 HTML / CSS
html5实现移动端适配完美写法
Nov 16 HTML / CSS
HTML5新标签兼容——&gt; 的两种方法
Sep 12 HTML / CSS
HTML5中在title标题标签里设置小图标的方法
Jun 23 HTML / CSS
HTML5的语法变化介绍
Aug 13 #HTML / CSS
Canvas与Image互相转换示例代码
Aug 09 #HTML / CSS
通过Canvas及File API缩放并上传图片完整示例
Aug 08 #HTML / CSS
HTML5新增的Css选择器、伪类介绍
Aug 07 #HTML / CSS
HTML5 自动聚焦(autofocus)属性使用介绍
Aug 07 #HTML / CSS
HTML5 placeholder(空白提示)属性介绍
Aug 07 #HTML / CSS
5个你不知道的HTML5的接口介绍
Aug 07 #HTML / CSS
You might like
PHP+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
认识并使用PHP超级全局变量
2010/01/26 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
自制微信公众号一键排版工具
2016/09/22 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
Vue axios获取token临时令牌封装案例
2020/09/11 Javascript
Python基于二分查找实现求整数平方根的方法
2016/05/12 Python
python使用opencv进行人脸识别
2017/04/07 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
python实现五子棋小游戏
2020/03/25 Python
python logging日志模块原理及操作解析
2019/10/12 Python
使用python实现对元素的长截图功能
2019/11/14 Python
pytorch数据预处理错误的解决
2020/02/20 Python
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
大学生毕业的自我评价分享
2014/01/02 职场文书
《我要的是葫芦》教学反思
2014/02/23 职场文书
大班开学家长寄语
2014/04/04 职场文书
学校运动会广播稿
2014/10/11 职场文书
2014年财务部工作总结
2014/11/11 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
三十年同学聚会感言
2015/07/30 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
Redis Stream类型的使用详解
2021/11/11 Redis