使用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 相关文章推荐
用倒置滤镜把div倒置,再把table倒置。
Jul 31 Javascript
js返回上一页并刷新代码整理
Dec 21 Javascript
jq选项卡鼠标延迟的插件实例
May 13 Javascript
用JavaScript实现动画效果的方法
Jul 20 Javascript
js绑定事件和解绑事件
Apr 27 Javascript
收藏AngularJS中最重要的核心功能
Jul 09 Javascript
jquery之基本选择器practice(实例讲解)
Sep 30 jQuery
实例解析ES6 Proxy使用场景介绍
Jan 08 Javascript
Node.js模拟发起http请求从异步转同步的5种用法
Sep 26 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
Oct 31 Javascript
JS大坑之19位数的Number型精度丢失问题详解
Apr 22 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
May 10 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语法(2)
2006/10/09 PHP
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
详解Laravel视图间共享数据与视图Composer
2016/08/04 PHP
Mac系统下安装PHP Xdebug
2018/03/30 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
用jQuery模拟页面加载进度条的实现代码
2011/12/19 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
TypeScript入门-接口
2017/03/30 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
2019/02/08 Javascript
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
垃圾回收的优点和原理
2014/05/16 面试题
质检员的岗位职责
2013/11/15 职场文书
吃空饷专项治理工作实施方案
2014/03/04 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
诚信承诺书范文
2014/03/27 职场文书
俞敏洪北大演讲稿
2014/05/22 职场文书
雷锋之歌观后感
2015/06/10 职场文书
研讨会致辞
2015/07/31 职场文书
2016国培学习心得体会
2016/01/08 职场文书
施工安全责任协议书
2016/03/23 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书
Django一小时写出账号密码管理系统
2021/04/29 Python
mysql配置SSL证书登录的实现
2021/09/04 MySQL