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 相关文章推荐
一款利用css3的鼠标经过动画显示详情特效的实例教程
Dec 29 HTML / CSS
CSS3弹性盒模型flex box快速入门心得(必看篇)
May 24 HTML / CSS
html Table 表头固定的实现
Jan 22 HTML / CSS
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
Jan 06 HTML / CSS
html5构建触屏网站之网站尺寸探讨
Jan 07 HTML / CSS
程序设计HTML5 Canvas API
Apr 08 HTML / CSS
浅析border-radius如何兼容IE
Apr 19 HTML / CSS
canvas之自定义头像功能实现代码示例
Sep 29 HTML / CSS
canvas线条的属性详解
Mar 27 HTML / CSS
canvas实现滑动验证的实现示例
Aug 11 HTML / CSS
能用CSS实现的就不要麻烦JavaScript了
Oct 05 HTML / CSS
Html5获取用户当前位置的几种方式
Jan 18 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中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
在Laravel5中正确设置文件权限的方法
2019/05/22 PHP
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
jQuery滚动条插件nanoscroller使用指南
2015/04/21 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
Vue.js中 v-model 指令的修饰符详解
2018/12/03 Javascript
对Layer弹窗使用及返回数据接收的实例详解
2019/09/26 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
区分vue-router的hash和history模式
2020/10/03 Javascript
跟老齐学Python之关于类的初步认识
2014/10/11 Python
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
Python编程实现的简单神经网络算法示例
2018/01/26 Python
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
在django模板中实现超链接配置
2019/08/21 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
使用Python pip怎么升级pip
2020/08/11 Python
校园标语大全
2014/06/19 职场文书
庆国庆活动总结
2014/08/28 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
旅行社计调工作总结
2015/08/12 职场文书
珍爱生命主题班会
2015/08/13 职场文书
学生病假条范文
2015/08/17 职场文书
Golang入门之计时器
2022/05/04 Golang