使用InstantClick.js让页面提前加载200ms


Posted in Javascript onSeptember 12, 2017

前言

加速网站加载的方式有很多,在@Roc的推荐下,我找到了这个InstantClick.js,仔细查看了官网的英文文档,发现InstantClick.js有个很好的实现思路(how-it-works)。

在访问者点击一个链接之前( 鼠标测试:test yourself here ):

  • 悬停 hover (hover->click之间200ms左右)
  • 鼠标按下 Mousedown (Mousedown->click之间100ms左右),
  • Touchstart 手机触碰

这两个事件之间通常有200ms的间隔,InstantClick 利用这个时间间隔预加载页面。这样当你点击页面的时候,其实页面已经加载到本地了,呈现当然也就会很快。

当然InstantClick 也使用了 Pjax: pushState 和 Ajax 技术

同时我试用了下,的确效果不错。如果你的博客需要实现Pjax,InstantClick会是个不错的选择。

使用方法

下载instantclick.js。instantclick.min.js仅仅2.5Kb,很小

使用

<script src="instantclick.min.js" data-no-instant></script>
<script data-no-instant>InstantClick.init();</script>

注:

  • data-no-instant的含义是,这个JS只会运行一次,需要根据自己的情况,设置
  • 如果想避免不必要的预加载,关闭hover,启用Mousedown是个不错的选择,moursedown意味着已经点击链接

查看效果

打开chrome console,查看network视图,会在每次hover时,都可以先加载页面,在click时展示结果页面。

由于没有一个好的截动画软件,所以没有gif动画展示

扩展

InstantClick也提供了几个事件可以设置。

  • change 页面更改完毕,即click触发加载后
  • fetch 页面开始预加载
  • receive 页面预加载完毕,即:hover或mousedown触发的预加载,但不一定会change,因为用户不一定click

实例

因为使用ajax,所以google ga不会统计PV,所以增加change方法

<script src="instantclick.min.js" data-no-instant></script>
<script data-no-instant>
/* Google Analytics code here, without ga('send', 'pageview') */
 
InstantClick.on('change', function() {
 ga('send', 'pageview', location.pathname + location.search);
});
 
InstantClick.init();
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
为JavaScript类型增加方法的实现代码(增加功能)
Dec 29 Javascript
jquery实现倒计时代码分享
Jun 13 Javascript
jQuery中get和post方法传值测试及注意事项
Aug 08 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
Jan 19 Javascript
jquery插件corner实现圆角边框的方法
Mar 09 Javascript
node.js中 stream使用教程
Aug 28 Javascript
JS封装的选项卡TAB切换效果示例
Sep 20 Javascript
Vue.js组件tab实现选项卡切换
Mar 23 Javascript
JQuery通过后台获取数据遍历到前台的方法
Aug 13 jQuery
Vue项目服务器部署之子目录部署方法
May 12 Javascript
ElementUI Tag组件实现多标签生成的方法示例
Jul 08 Javascript
Vue+Spring Boot简单用户登录(附Demo)
Nov 12 Javascript
VueJs组件prop验证简单介绍
Sep 12 #Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
Sep 12 #Javascript
67 个节约开发时间的前端开发者的工具、库和资源
Sep 12 #Javascript
react-native DatePicker日期选择组件的实现代码
Sep 12 #Javascript
JavaScript中递归实现的方法及其区别
Sep 12 #Javascript
详解react-native-fs插件的使用以及遇到的坑
Sep 12 #Javascript
React中jquery引用的实现方法
Sep 12 #jQuery
You might like
全文搜索和替换
2006/10/09 PHP
php中explode函数用法分析
2014/11/15 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
PHP简单生成缩略图相册的方法
2015/07/29 PHP
PHP 实现链式操作
2021/03/09 PHP
Div自动滚动到末尾的代码
2008/10/26 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
Koa代理Http请求的示例代码
2018/10/10 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
[01:19:34]2014 DOTA2国际邀请赛中国区预选赛 New Element VS Dream time
2014/05/22 DOTA
python optparse模块使用实例
2015/04/09 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
python pygame实现2048游戏
2018/11/20 Python
python redis 删除key脚本的实例
2019/02/19 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
2019/10/12 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
美国高街时尚品牌:OASAP
2016/07/24 全球购物
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
Myprotein丹麦官网:欧洲第一运动营养品牌
2019/04/15 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
实习单位接收函模板
2014/01/10 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
小学生学习感言
2014/03/10 职场文书
新年爱情寄语
2014/04/08 职场文书
市场营销毕业求职信
2014/08/07 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
大学生实习证明
2015/06/16 职场文书
物业公司管理制度
2015/08/05 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书