使用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 的方法重载效果
Aug 07 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
Dec 04 Javascript
javascript实现浏览器窗口传递参数的方法
Sep 03 Javascript
js实现按钮控制图片360度翻转特效的方法
Feb 17 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
Aug 24 Javascript
JS HTML5拖拽上传图片预览
Jul 18 Javascript
JS模拟实现方法重载示例
Aug 03 Javascript
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
Aug 23 jQuery
基于js文件加载优化(详解)
Jan 03 Javascript
JavaScript使用小插件实现倒计时的方法讲解
Mar 11 Javascript
基于vue手写tree插件的那点事儿
Aug 20 Javascript
JS实现移动端双指缩放和旋转方法
Dec 13 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
Terran热键控制
2020/03/14 星际争霸
一些常用的php简单命令代码集锦
2007/09/24 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
PHP容器类的两种实现方式示例
2019/07/24 PHP
javascript各种复制代码收集
2008/09/20 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
jQuery幻灯片插件owlcarousel参数说明中文文档
2018/02/27 jQuery
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
[00:36]我的中国心——Serenity vs Fnatic
2018/08/21 DOTA
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
Python 2与Python 3版本和编码的对比
2017/02/14 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
销售人员自我评价怎么写
2013/09/19 职场文书
护士辞职信模板
2014/01/20 职场文书
外贸员简历中的自我评价
2014/03/04 职场文书
会计人员岗位职责
2014/03/19 职场文书
领导班子整改措施
2014/10/24 职场文书
中班教师个人总结
2015/02/05 职场文书
质检员工作总结2015
2015/04/25 职场文书
跳高加油稿
2015/07/21 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP