使用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 相关文章推荐
js验证模型自我实现的具体方法
Jun 21 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
Aug 05 Javascript
动态加载script文件的两种方法
Aug 15 Javascript
多种方法实现JS动态添加事件
Nov 01 Javascript
不使用jquery实现js打字效果示例分享
Jan 19 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
Apr 25 Javascript
对比分析json及XML
Nov 28 Javascript
jquery实现顶部向右伸缩的导航区域代码
Sep 02 Javascript
一款简单的jQuery图片标注效果附源码下载
Mar 22 Javascript
JavaScript实现购物车基本功能
Jul 21 Javascript
vue中v-model动态生成的实例详解
Oct 27 Javascript
vue+django实现下载文件的示例
Mar 24 Vue.js
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常用函数 推荐收藏保存
2010/02/21 PHP
php自定义错误处理用法实例
2015/03/20 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
javascript数组操作总结和属性、方法介绍
2014/04/05 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
jquery插件autocomplete用法示例
2016/07/01 Javascript
Angular 页面跳转时传参问题
2016/08/01 Javascript
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
深入理解vue-class-component源码阅读
2019/02/18 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
Javascript 关于基本类型和引用类型的个人理解
2019/11/01 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
Python 自动安装 Rising 杀毒软件
2009/04/24 Python
python发送伪造的arp请求
2014/01/09 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
Django读取Mysql数据并显示在前端的实例
2018/05/27 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
用CSS3将你的设计带入下个高度
2009/08/08 HTML / CSS
HTML5 visibilityState属性详细介绍和使用实例
2014/05/03 HTML / CSS
CSS实现fullpage.js全屏滚动效果的示例代码
2021/03/24 HTML / CSS
放飞理想演讲稿
2014/09/09 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
办公用品质量保证书
2015/05/11 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
详解MySQL中的主键与事务
2021/05/27 MySQL
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js