// 在应用支持 NPM 时使用 NPM 安装 Aegis SDK。
// npm install --save aegis-mp-sdk
// 引入后进行初始化
import Aegis from 'aegis-mp-sdk';
const aegis = new Aegis({
id: 'xxxx', // 上报 id
uin: 'xxx', // 用户唯一 ID(可选)
reportApiSpeed: true, // 接口测速
spa: true // spa 应用页面跳转的时候开启 pv 计算
});
大写的注:
o(╯□╰)o
在 RUM 控制台页面性能页面,列出了时间段内每个页面的页面首次渲染时间,也提供了不同维度的数据统计,如地域、网络、机型等,接下来需要从页面中分析出耗时较大且访问较为频繁的页面进行优化。
通过按耗时和按采样量排序,很明显 1,3,4 这三个页面拉高了用户的等待时间,是主要考虑优化的页面。
这三个页面都包含网络请求,并在请求结束后通过 setData 触发页面的 DOM 更新,此外:
第一个页面是小程序的首页,包含广告组件和自定义的姨妈记录预测卡片的列表。
第三个页面含有自定义的日历组件和日常备忘卡片列表。
第四个页面包含广告组件和互联网图片资源。
提高网页的性能一般要包括优化加载的速度和程序执行的流畅度;而加载速度又可以优化服务端响应的时间(包括代码包的下载时间,网络请求接口的响应时间,互联网的图片及字体等资源文件)和页面自身加载和渲染的时间。
常见图片可以采用JPG
、PNG
、WEBP
、雪碧图或字体图标实现,可搜索到的描述大概都是不同格式适用的不同场景,以及从占用带宽上的描述。
WEBP
,目前绝大多数的微信用户基础库以及高于2.16.0,因此可以对互联网图片转换为WEBP
格式,减小网络加载耗时。通过控制台中的 API 监控,可以发现从微信小程序中检测到的网络请求耗时波动很大,分布在100ms - 4000ms 。
进入 nginx 筛选出对应时间段的网络请求,按照 $upstream_response_time
分组计数如图,发现服务器端接口性能比较稳定。问题应该出现在客户端网络到服务端中间的网络上。
小程序中强制要求使用 https 协议发起网络请求,请求链路为 DNS -> Connect -> SSL -> request -> response ,在本机调试各阶段起止时间戳及耗时如下:(数据只代表本机网络情况,结果可能存在波动)。可见小程序在发起第二次请求时,已经将 DNS 等信息缓存,并重用了 Socket 链路,从客户端到动态加速网络之间的耗时大概在40ms,从动态加速网络到服务器耗时大概在 20ms。而在第一次请求中,客户端需要进行 DNS 解析,建立 SSL 链路增加了网络耗时。
{
"lazyCodeLoading": "requiredComponents"
}
/** @const */
var LOG = false;
LOG && log('hello world !');
因为构建 CSSOM 树时会阻塞页面的解析,因此需要:
1. 按照页面访问的频次,将图片资源分成常用的和不常用的,将常用的放入小程序代码包通过本地加载,将不常用的转换成webp放到服务器。
2. 减小代码包体积:压缩代码包中的图片资源,对PNG格式的透明图设置更少的颜色数;通过依赖分析,更换体积更小的markdown渲染依赖。从1M+下降到280K+。
1. 由于只有一台华北地区的服务器,为解决不同地域和运营商的访问速度,开启全站动态加速。通过某测速网站看到可解析到70+个独立IP,并且不同地区的用户会访问到同运营商较近的IP,然后由DCDN通过内部线路转发用户到服务器的请求。
2. 通过分析,首次请求时需要进行域名的解析和建连,后续的请求会复用该链路,解析和SSL等时间为0。 通过某测速网站可看到平均响应时间在0.3s,考虑到链路复用,网络请求时间会在60ms左右。
2. 对不经常变更且频繁访问的接口,在DCDN中设置静态缓存,并触发接口预热,将接口的响应缓存到DCDN的二级节点上。这样用户发起这些请求时,直接由DCDN做出应答而不回源到真实服务器处理。
3. 在服务端和客户端开启http/2协议支持。由于小程序中无高并发请求,自测没有明显改善。
4. 对超过1kb的响应体开启gzip压缩。
5. 对服务端的图片等静态资源设置浏览器缓存。
7. 由于小程序不像BAT这么大用户量和高频的访问,根据DNS的解析机制,各地运营商如果有缓存DNS的解析结果就不会向跟DNS进行解析,利用网站测速提供的服务,发送GET测速,让各地运营商缓存DNS结果。
8. 开启OCSP Stapling,提高证书的校验性能。
9. 小程序使用中,服务端会调用api.weixin.qq.com换取用户的openid,通过调用微信公众平台接口获取该域名的各个ip地址,在服务器执行ping命令,找到最快的一个ip,写入host文件。从40ms降低到28.8ms。
1. 代码中对图片标签开启懒加载。
2. 减小冗余的<view>层次嵌套。
3. 为data赋初始值,避免在网络请求结束后赋值引起页面元素的位置变动。
4. 开启代码的按需注入
5. 采用DCDN后,各地域各运营商的绝大部分网络请求会在0.3s内到达,因此删除了网络请求起止的loading浮层动画。
6. 修复一处很二的bug。
7. 原来为了真机调试方便,把网络请求、自定义组件的响应等打印到了vConsole中。目前线上生产环境删除了所有的日志打印。
8. 删除了部分无用的css代码。优化的部分css样式的选择器。
9. 将网络请求从onReady提前到onLoad。
10. 亲测使用骨架屏只会让人感觉页面非白了,但会增加首屏的时间。
1. 所有新用户(首次访问)最初进入小程序时,页面和data中的数据都是一样的。将这些数据作为data的默认值,直接显示出来,网络请求到达后,由于data内容不变,不会发生页面的重新渲染。
2. 用户使用程序后,将从网络请求中获取的用户数据存储到storage中。
3. 在服务端,当小程序用户登入后,开启异步线程将主要的用户数据从mysql刷入redis进行热备。
4. 对于长列表改为数据分页加载。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
焦作平台关键词搜索排名珠海关键词seo推广排名黄山网站关键词排名有效果吗广东价格低的关键词优化排名四川百度优化关键词排名百度关键词排名十大排名济源整站关键词排名优化价格鞍山搜索关键词排名郑州省心的关键词排名下拉关键词排名首推7火星淘宝年度搜索关键词排名关键词百度优化排名枣庄关键词排名技术平湖关键词优化排名关键词排名36石家庄网站seo关键词排名优化关键词排名推荐f火11星河南搜狗关键词点击排名工具关键词排名首页没有流量伦敦关键词排名价格表新民爱采购关键词排名安庆行业关键词排名西安官网关键词自然排名价格网页关键词与网页的排名关系湖南淘宝刷关键词排名阜阳网站关键词优化排名海陵关键词优化排名焦作360关键词排名优化关键词排名出色火4星现在做网站关键词排名有用吗刷关键词排名建公开关键词排名费用深圳关键词搜索排名wish厨房龙头关键词排名坊子区网站关键词快速排名服务平山指定关键词优化排名价格太原关键词排名参考价店铺如何提升关键词的排名凯里百度关键词排名大码女装搜索关键词排名整站关键词排名焦作官网关键词搜索排名app关键词排名下降移动网络关键词百度排名软件优化的关键词排名不稳定网站关键词怎么突然排名全没关键词排名前十列表南通如皋关键词排名公司推荐推广关键词排名大全淘宝关键词排名 展现关键词排名哪个正规镇平关键词优化排名怎么弄青海搜索关键词排名优化技巧如皋关键词排名优化公司刷关键词排名喜欢易速达关键词排名报价价格是多少钱关键词排名点击需火19星洛南县关键词seo排名优化长沙360关键词排名关键词排名高展示数低工具关键词排名方式关键词排名安信上海百首网络天津seo关键词排名哪家好拼多多关键词排名20条商丘seo关键词自然排名技术奎文关键词排名优化哪家好关键词排名50页面查淘宝关键词排名的工具关键词网站排名特地易 速达河西区关键词排名优化步骤秀英区关键词seo排名优化百度刷seo关键词排名关键词的排名怎么优化小红书关键词排名代发宜昌市关键词排名公司关键词优化排名卩金苹果靠谱百度关键词排名查询接口推广周口平台长尾关键词排名网站整站关键词没有排名了双鸭山关键词快速排名小红书搜索排名关键词优化拼多多开直通车能把关键词排名平塘网站关键词排名云浮关键词排名培训360关键词排名 se关键词反复出现排名小红书笔记关键词排名技巧重庆网络关键词排名优化是什么关键词优化排名咨询金手指宁波公司关键词排名主要做什么的乌鲁木齐关键词排名搜狗排名提升关键词排名黑龙江关键词优化排名全包关键词排名咨询电话关键词优化排名吉金手指下拉网站关键词排名提高方法卫浴行业关键词排名公司龙游百度关键词排名优化茂名关键词排名网站首页没有关键词排名关键词排名z候坡三测4江西域名关键词排名查询深圳关键词排名点击宁波无锡关键词排名物流网站排名关键词湖南查关键词排名工具下拉关键词排名皆选4火星顺德关键词排名哪家好太原关键词排名报价广州市关键词排名流程黑龙江关键词排名的软件拼多多直通车关键词没排名濮阳整站关键词优化排名多少钱关键词没排名了怎么办如何查询网站关键词搜索排名湖南淘宝刷关键词排名大同手机端关键词排名关键词快速排名软件多刷关键词排名丏适宙9斯呵护吕梁关键词排名机构济宁百度关键词排名如何做长尾关键词排名新网站核心关键词排名前十直通车关键词排名在那里看查网页排名关键词很好的房产搜索产品关键词排名沧州市关键词seo排名优化大数据关键词排名资源刷神马手机关键词排名抖音关键词竞价排名长沙seo关键词排名平谷关键词排名关键词排名搜索rb丿云速捷百度竞价关键词排名规则校园关键词排名专家商标关键词排名潍坊高新网站关键词快速排名武汉有经验的seo关键词排名安宁亚马逊关键词排名络关键词排名台北那个代做特殊关键词排名关键词排名的诀窍杭州求推荐seo关键词排名关键词排名相加指数蛙关键词优化排名怎么写新乡百度关键词排名技术技巧关键词排名优化机构 s拼多多+关键词排名云南关键词排名平台seo关键词排名优选w火 星长尾关键词排名只有易速达杭州百度关键词排名推广方法上海营销关键词排名优化苏州行业关键词排名推广方法嘉兴产品关键词排名西安关键词排名公司关键词排名系统收费标准推一个关键词上排名需要多久关键词排名跟新福建代做关键词排名提升网站关键词排名及搜索流量焦作哪里有关键词排名哪家好关键词优化排名速升云休闲关键词排名案例锦州关键词排名报价南京本地关键词排名苏州园区全国关键词排名优化西安整站关键词自然排名软件安徽医疗关键词排名谷歌 关键词排名泉州关键词推广排名为什么要做抖音关键词排名互联网关键词排名服务保证商丘搜狗关键词搜索排名软件安阳首页排名快的关键词排名网站关键词排名找寻指数蛙福建实力强的关键词排名优化关键词排名如何计算流量关键词网站排名那就易速达店铺关键词排名在哪查湖南搜索关键词排名优化服务关键词排名TO忠魁互联河南百度关键词优化排名工具淄博关键词排名收费关键词排名搜索选择金手指提升关键词排名荐推易速达云南百度关键词推广快速排名宿迁关键词排名报价关键词排名优化留意云速捷苏州热门关键词排名怎么做关键词排名seo针对易速达台州关键词排名推广运城公证关键词排名关键词快速排名拾金苹果四平关键词优化排名公司哪家好佛山关键词排名首页excel计算关键词排名郑州本地关键词优化快排名快苏州行业关键词排名推广方法抖音生活随拍热门关键词排名