使用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的滚动新闻列表
Jun 19 Javascript
jQuery中bind与live的用法及区别小结
Jan 27 Javascript
jQuery结合HTML5制作的爱心树表白动画
Feb 01 Javascript
JavaScript实现基于Cookie的存储类实例
Apr 10 Javascript
使用JQuery实现的分页插件分享
Nov 05 Javascript
微信小程序 canvas API详解及实例代码
Oct 08 Javascript
Angular表单验证实例详解
Oct 20 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
Dec 14 Javascript
JS正则获取HTML元素的方法
Mar 31 Javascript
收集前端面试题之url、href、src
Mar 22 Javascript
微信小程序中的上拉、下拉菜单功能
Mar 13 Javascript
javascript canvas实现简易时钟例子
Sep 05 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
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
php代码审计比较有意思的例子
2014/05/07 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
joomla数据库操作示例代码
2016/01/06 PHP
PHP基于curl后台远程登录正方教务系统的方法
2016/10/14 PHP
php显示页码分页类的封装
2017/06/08 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
JS 操作符整理[推荐收藏]
2011/11/15 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
理解javascript回调函数
2014/12/28 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
2016/11/05 Javascript
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
uniapp,微信小程序中使用 MQTT的问题
2020/07/11 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
涨价通知怎么写
2015/04/23 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
django中websocket的具体使用
2022/01/22 Python
mysql sock 文件解析及作用讲解
2022/07/15 MySQL