使用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 相关文章推荐
利用404错误页面实现UrlRewrite的实现代码
Aug 20 Javascript
关于jQuery判断元素是否存在的问题示例探讨
Jul 21 Javascript
node.js中的fs.symlinkSync方法使用说明
Dec 15 Javascript
node.js中的fs.statSync方法使用说明
Dec 16 Javascript
js获取当前时间显示在页面上并每秒刷新
Dec 24 Javascript
JavaScript里四舍五入函数round用法实例
Apr 06 Javascript
JavaScript数组去重的3种方法和代码实例
Jul 01 Javascript
解析javascript瀑布流原理实现图片滚动加载
Mar 10 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
May 10 Javascript
详解在Vue中通过自定义指令获取dom元素
Mar 04 Javascript
Postman动态获取返回值过程详解
Jun 30 Javascript
element-ui封装一个Table模板组件的示例
Jan 04 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生成随机数的方法实例分析
2015/01/22 PHP
PHP按指定键值对二维数组进行排序的方法
2015/12/22 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
Python自动化测试工具Splinter简介和使用实例
2014/05/13 Python
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
Python数据结构dict常用操作代码实例
2020/03/12 Python
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
地理科学专业毕业生求职信
2013/10/15 职场文书
应届生法律求职信
2013/10/22 职场文书
关于礼仪的演讲稿
2014/01/04 职场文书
长辈证婚人证婚词
2014/01/09 职场文书
关于赌博的检讨书
2014/01/24 职场文书
运动会通讯稿150字
2014/02/15 职场文书
小学优秀辅导员事迹材料
2014/05/11 职场文书
巴黎圣母院观后感
2015/06/10 职场文书
大学宣传委员竞选稿
2015/11/19 职场文书
微信小程序纯CSS实现无限弹幕滚动效果
2022/09/23 HTML / CSS