使用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 相关文章推荐
jquery入门—数据删除与隔行变色以及图片预览
Jan 07 Javascript
JS实现文件动态顺序载入的方法
Mar 07 Javascript
JS实现的仿淘宝交易倒计时效果
Nov 27 Javascript
AngularJS控制器之间的通信方式详解
Nov 03 Javascript
jQuery拖拽通过八个点改变div大小
Nov 29 Javascript
一个简易时钟效果js实现代码
Mar 25 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
Nov 27 Javascript
详解Chai.js断言库API中文文档
Jan 31 Javascript
JS求1到任意数之间的所有质数的方法详解
May 20 Javascript
VUE+elementui面包屑实现动态路由详解
Nov 04 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
May 03 Javascript
uni-app使用countdown插件实现倒计时
Nov 01 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
真正的ZIP文件操作类(php)
2007/07/21 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
PHP中数组定义的几种方法
2013/09/01 PHP
php的4种常见运行方式
2015/03/20 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
2018/11/08 Javascript
python中cPickle用法例子分享
2014/01/03 Python
python数据清洗系列之字符串处理详解
2017/02/12 Python
对python实现合并两个排序链表的方法详解
2019/01/23 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
基于Python的自媒体小助手---登录页面的实现代码
2020/06/29 Python
如何用Matplotlib 画三维图的示例代码
2020/07/28 Python
最简单的matplotlib安装教程(小白)
2020/07/28 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
Python之多进程与多线程的使用
2021/02/23 Python
《登鹳雀楼》教学反思
2014/04/09 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
教师师德考核自我评价
2014/09/13 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
企业工会工作总结2015
2015/05/13 职场文书
音乐剧猫观后感
2015/06/04 职场文书
教师读书活动心得体会
2016/01/14 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript
MySQL数据库完全卸载的方法
2022/03/03 MySQL
Python实现批量将文件复制到新的目录中再修改名称
2022/04/12 Python
js 实现验证码输入框示例详解
2022/09/23 Javascript