使用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 AutoComplete自动完成 的使用方法实例
Mar 19 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
Feb 23 Javascript
javascripit实现密码强度检测代码分享
Dec 12 Javascript
jquery实现瀑布流效果分享
Mar 26 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
Apr 12 Javascript
jquery如何判断表格同一列不同行input数据是否重复
May 14 Javascript
javascript下拉框选项单击事件的例子分享
Mar 04 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
Oct 25 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
Dec 29 Javascript
JavaScript键盘事件常见用法实例分析
Jan 03 Javascript
基于Vue中的父子传值问题解决
Jul 27 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
Sep 21 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
回首过去10年中最搞笑的10部动漫,哪一部让你节操尽碎?
2020/03/03 日漫
php正则表达匹配中文问题分析小结
2012/03/25 PHP
php网站被挂木马后的修复方法总结
2014/11/06 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
nodejs 后缀名判断限制代码
2011/03/31 NodeJs
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
2016/12/26 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
Vue常用的几个指令附完整案例
2018/11/06 Javascript
javascript获取select值的方法完整实例
2019/06/20 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
.netcore+vue 实现压缩文件下载功能
2020/09/24 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
Python中tell()方法的使用详解
2015/05/24 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
Python将图片转换为字符画的方法
2020/06/16 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
详细的大学生创业计划书模板
2014/01/27 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
担保书范文
2015/01/20 职场文书
小班教师个人总结
2015/02/05 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
2021/06/26 Java/Android