使用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 相关文章推荐
json数据的列循环示例
Sep 06 Javascript
JavaScript cookie的设置获取删除详解
Feb 11 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
Mar 05 Javascript
js实现分割上传大文件
Mar 09 Javascript
JavaScript中transform实现数字翻页效果
Mar 08 Javascript
jQuery实现简单的抽奖游戏
May 05 jQuery
Angularjs中数据绑定的实例详解
Aug 25 Javascript
React数据传递之组件内部通信的方法
Dec 31 Javascript
angular1.x ui-route传参的三种写法小结
Aug 31 Javascript
记录一次完整的react hooks实践
Mar 11 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
Jun 11 Javascript
在vue中实现清除echarts上次保留的数据(亲测有效)
Sep 09 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
php继承的一个应用
2011/09/06 PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
2012/10/08 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
js综合应用实例简单的表格统计
2013/09/03 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
2017/06/13 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
深入浅出理解JavaScript闭包的功能与用法
2018/08/01 Javascript
js module大战
2019/04/19 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
多个应用共存的Django配置方法
2018/05/30 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
python中正则表达式与模式匹配
2019/05/07 Python
深入浅析Python 函数注解与匿名函数
2020/02/24 Python
Django中的AutoField字段使用
2020/05/18 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
2021/01/09 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
纯CSS3实现移动端展开和收起效果的示例代码
2020/04/26 HTML / CSS
关于学习的决心书
2015/02/05 职场文书
安全教育培训制度
2015/08/06 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
干部作风纪律整顿心得体会
2016/01/23 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
学生早退检讨书(范文)
2019/08/19 职场文书
字节飞书面试promise.all实现示例
2022/06/16 Javascript