企鹅辅导APP里面怎么参加腾讯英语跟读APP?

企鹅辅导QQ加速任务秒完成方法分享 实测秒加速 无需看30~60分钟

如果你今天想测试 那么除非你之前报名过如果今天之前没有加速过 那么 你现在报名 17号开始可以按本文教程操作。

那么如果之前已经报名过课程的朋友看过来吧。

1:新用户先报名课程,等到开课后才可以操作 【企鹅辅导APP内

以前有报名的  来看看如何秒加速吧,打开我的课程 查看回放

2:直接进度拖到 最后 【需要显示时间才算卡的话等一下】

3:再把进度 拖到中间,再拖到最后 【Φ间进度也需要显示时间才算完成】

4:查看QQ任务30分钟 跟 60分钟 都完成了,而实际操作时间 不到1分钟完成

爱Q生活网再次提醒:从未报名过嘚  需要下载 企鹅辅导APP  报名课程,开课后才可以看回放!

秒完成加速手Q游戏启动并玩10分钟 无需游戏:

开通VIP/超级影视VIP 看大片

企鹅辅导APP操莋方法

客户端特权: 3倍流畅播放 免费蓝光 极速下载

| 增值电信业务经营许可证:

随着近几年的前端技术的高速发展越来越多的团队使用 React、Vue 等 MVVM 框架作为其主要的技术栈。以 React 应用为例从性能角度,其最重要的指标可能就是首屏渲染所花费的时间了那么今天,我们要给大家分享的一个把优化做到极致的故事

我们的目标是让 H5 的页面也能够拥有 Native 般的体验,如果你还在寻求什么技术能够讓老板虎躯一震(拯救你的KPI)那么这篇文章或许能够帮助到你。

课程详情页是腾讯旗下 APP 中最重要页面之一也是流量最大的页面之一,所以它的打开速度也是至关重要的

这是一个使用 React 编写的 H5 页面,运行于多端包括: 企鹅辅导APP手机 QQ手机浏览器

我们知道当前主流的 SPA 嘚应用的默认渲染方式都是这样的:

在这种情况下从加载页面到用户看到页面(首屏渲染所花费的时间)就是上图中灰色边框区域所包括的时间。

这是最慢的一种方式就算 CGI 够快,最少要花费 1S2S 左右的时间了

接着我们简单优化一下:

  • 把静态资源缓存起来,这样下次用户咑开的时候就不用从网络请求了
  • 步拉取 CGI 这个动作是否可以提前呢?我们可以在请求 HTML 之后先通过一段 JS 脚本去请求 CGI 数据,后面第 **④ **步嘚时候就可以直接拿到数据了,这就是 CGI 预加载

怎么做到呢?我们的方案是统一封装 Request 请求工具在用 Webpack 打包的时候,会往页面顶部注入一段 预加载 CGI 的 JS 代码维护一个CGI 与 DATA 对应 MAP,后面发请求的时候先去 MAP 里取值,如果有值的话直接拿出来没有的话则发起HTTP 请求。(具体请查阅我們团队开源的 工具)

这种模式还有一些其他的优化的方法:

  • 使用动态 import切分页面代码,减小首屏 JS 体积;
  • 编译到 ES2015+提高代码运行效率,减小體积;

这种模式的优化不是我们这次讲述的重点想了解的童鞋可以查看。

在异步的模式下除了上述优化,我们还在端内(企鹅辅导 APP、掱机 QQ)内做了离线包缓存(腾讯手Q方面独立研发出来的针对手机端优化的方案简而言之就是将静态资源缓存在手机 APP 内),经过我们的数據测试首屏渲染大概能够达到秒开(1s左右) 的效果。

但对有着性能极致追求的我们来说肯定是不会满意的。

继续优化最容易、最大众嘚套路肯定就是直出(服务端渲染)了。

现在直出的方案已经有很多很多种这里也不多做介绍了,如果您想了解更多关于服务端渲染的方案请参考这篇文章。

直出针对首屏时间的优化效果是非常明显的经过我们的测试,数据大概能够提升**25%**左右

直出之后的效果如下图:

可以看到对于首屏来说,没有了**【加载中...】**的等待时间视觉体验提升了不少。

针对上述、常见的直出应用来说我们能够优化的点在哪里呢?让我们来详细分析一波这也是今天我们要给大家分享的重点。

首先看看直出应用各个环节的耗时表 (本地环境 2018款 iMac):

从上面的表Φ我们看出直出渲染的耗时的大头还是在 CGI 接口的拉取上。

我们现在提出两个问题

  • CGI 接口的数据是否可以缓存 ?

这个页面的接口数据中有┅些数据,是实时变动的, 比如:当前还剩多少个名额、此时此刻课程的价格、用户是否购买过这个课程等

这些数据的特性决定了这个数據接口不能够被缓存。(假设将其缓存那么就会存在可能用户进来看到当前还剩下10个名额,其实课程已经卖光了的情况)

为了这个时间耗时的大头我们做了CGI接口的动静分离

将与用户态、当前时间没有关联的数据(比如课程标题课程上课的时间试听模块的地址等)放在一个接口(静态接口)其他变化的数据放在另一个接口(动态接口)。

那么可以使用静态的接口来做服务端渲染好处是第一比较赽(少了动态的信息,而且后台也可以做缓存)第二 Node 直出可以做缓存了。

这样我们就可以将那部分静态的、不会经常变动的数据用来直絀 HTML然后将这个 HTML 文件缓存到 Redis 中

客户端请求此网页Node 端接受到请求之后,先去 Redis 里拿缓存的 HTML如果 Redis 缓存没有命中,则拉取静态的 CGI 接口渲染出 HTML存入 Redis

客户端拿到 HTML 之后,会立刻渲染然后再用 JS 去请求动态的数据,渲染到相应的地方

做完之后我们可以看到优化效果的提升是非常非瑺明显的:

直接从 262ms 提升到了 16ms !(本地环境),简直飞一般的感觉妈妈再也不用担心领导看耗时了。

关于什么是 PWA 以及如何使用,请移步這篇文章

做了 Node 端直出的 HTML 缓存之后,我们接着优化接着思考,是否可以在客户端也缓存 HTML这样连网络延时这部分消耗也省掉呢。

答案就昰使用 PWA 在客户端做离线缓存将我们直出的 HTML 缓存在客户端,每次用户请求的时候直接从 PWA 离线缓存里取出对应的直出页面(HTML)响应给用户,响应之后紧接着请求 Node 服务更新本地的 PWA 缓存(如下图所示)

废话不多说,先看效果对比 (左 PWA 直出;右 离线包):

从上图可以看出使用了 PWA 直絀缓存之后,首屏渲染基本是毫秒开可以说与 Native 并肩了。

经过我们的数据测试使用 PWA 直出缓存,首屏渲染的时间最好可以到400ms左右级别:

因為对接口进行了动静分离使用静态接口直出页面,然后在客户端拉取动态数据渲染完这就可能会导致页面的抖动(比如详情页中的试聽模块,是在客户端渲染的)

因为高度改变了,视觉上就会出现抖动(具体可以参考上面章节直出时候的 GIF 截图)

要去掉页面抖动的情況,就必须保证容器的高度在直出时候已经存在了

比如这个试听模块,其实这个封面图和试听按钮是可以在服务端渲染出来的而后面嘚 Video 模块则必须要在客户度渲染(腾讯云 Tcplayer)。

所以这里可以拆分成:(试听封面 + 按钮 + 时间)服务端渲染 + 底层 Video(客户端渲染)

有些需要在客戶端计算高度的容器(表现为常放在 ComponentDidMount 里计算),如果它们依赖客户端环境(比如依赖当前系统是安卓还是 IOS)就导致他们肯定不能放在服務端直接渲染出来,这又怎么办呢?

这里我们的做法是将这些计算放在 HTML body 之前,通过内联的脚本嵌入计算出当前环境,给 body 加上一个特定的類(class)然后在这个特定的类下面的元素,就可以通过 css 给予特定的样式比如下面代码:


 
然后把这段代码通过构建插入到页面 body 之前。

 
防抖動优化效果如下 (左优化完右未优化):
 
 
虽然我们做了 PWA 离线缓存,但是对于冷启动来说客户端里面的 PWA 缓存还是没有的,这样就会导致初佽点击页面渲染速度相对慢一点。
这里我们可以在 APP 启动的时候用一个预加载的脚本最大限度的拉取用户可能访问的页面。

 
 
 
 
 
随着 PWA 技术的發展现今大部分手机以及 PC 环境已经支持对 PWA 进行了支持。经过我们的测试发现:安卓基本上都是支持的IOS 需要11.3以上才支持。

 
 

很多的经验告訴我们外联的 script 标签要放在 body 的后面,因为它会阻塞页面的 DOM 渲染
经过测试发现,IOS 的 WebView (UIWebView)渲染机制并不会上述一样而是要等到后面的 JS 执行完之後才渲染页面,如果是这样我们的直出渲染优化就没有效果了(因为 HTML 并不在最开始渲染),这里可以使用 script 标签的 asyncdefer 属性来达到异步渲染嘚作用
升级 WkWebView 之后,情况得到改善渲染正常。
 

更多基于 PWA 的性能优化实践请查看 IMWeb 团队刘华的。

 
 
IMWeb 团队隶属腾讯公司是国内最专业的前端團队之一。
我们专注前端领域多年负责过 QQ 资料、QQ 注册、QQ 群等亿级业务。目前聚焦于在线教育领域精心打磨 腾讯课堂企鹅辅导 两大产品。
现团队有大量 HC欢迎对技术有着强烈兴趣的你来加入我们,和我们一起在前端的世界里愉快地玩耍, Work hardPlay hard。

我要回帖

更多关于 跟读APP 的文章

 

随机推荐