- Published on
Punch LCP 构成
- Authors
- Name
- Magikarp
Performance 分析
环境:正式,20221110-1949-f6966-release
Network:
![![图片]](/_next/image?url=%2Fpunch-lcp-analyze%2Fimage-1688540066735.png&w=1080&q=75)
Performance json
lcp 元素
根据网络情况不同,会有不同的 lcp
![![图片]](/_next/image?url=%2Fpunch-lcp-analyze%2Fimage-1688540066737.png&w=750&q=75)
![![图片]](/punch-lcp-analyze/image-1688540066738.png)
针对实际业务场景只分析图二的场景
Lcp 构成
- 页面访问 /punch/punch
project: VNiHYxlRn65CRO-9O7NT0
|
SELECT
date_trunc('day', __time__) AS time,
approx_percentile(response_time, 0.95) as htmlResponseTimeTP95,
approx_percentile(ttfb, 0.95) as htmlTtfbTP95
WHERE
router_path = '/punch/punch'
AND
event = 'NAVIGATION'
GROUP BY
time
ORDER BY
time DESC
- 基础资源加载
vconsole.min.js
sentry.min.js
font.js
h5-js-sdk.js
embed.min.js~~~~async ?
project: VNiHYxlRn65CRO-9O7NT0
|
SELECT
date_trunc('day', __time__) AS time,
approx_percentile(duration_time, 0.95) as htmlAssetsTP95
WHERE
project = 'VNiHYxlRn65CRO-9O7NT0'
AND (
resource_name = 'https://static-core.mokahr.com/punch/assets/vconsole.min.js'
OR resource_name = 'https://static-core.mokahr.com/punch/assets/sentry.min.js'
OR resource_name = 'https://at.alicdn.com/t/font_1052316_7vn9rrvr392.js'
OR resource_name = 'https://lf1-cdn-tos.bytegoofy.com/goofy/ee/lark/h5jssdk/lark/js_sdk/h5-js-sdk-1.5.8.js'
)
GROUP BY
time
ORDER BY
time DESC
- gray 接口
gray
mainfest.json
project: VNiHYxlRn65CRO-9O7NT0
|
SELECT
date_trunc('day', __time__) AS time,
approx_percentile(duration_time, 0.95) as grayTP95
WHERE
resource_name like '/api/gateway/gray%'
GROUP BY
time
ORDER BY
time DESC
- mainfest.json
project: VNiHYxlRn65CRO-9O7NT0
|
SELECT
date_trunc('day', __time__) AS time,
approx_percentile(duration_time, 0.95) as mainfestTP95
WHERE
resource_name = '/punch/manifest.json'
GROUP BY
time
ORDER BY
time DESC
- 加载基础资源文件
umi.css
common.js
umi.js
project: VNiHYxlRn65CRO-9O7NT0
|
SELECT
date_trunc('day', __time__) AS time,
approx_percentile(duration_time, 0.95) as commonAssetsTP95
WHERE
project = 'VNiHYxlRn65CRO-9O7NT0'
AND (
resource_name like 'https://static-core.mokahr.com/punch/assets/umi%'
OR resource_name like 'https://static-core.mokahr.com/punch/assets/common%'
)
GROUP BY
time
ORDER BY
time DESC
- 加载 layout 资源文件
vendors.js
layout.css
layout.js
project: VNiHYxlRn65CRO-9O7NT0
|
SELECT
date_trunc('day', __time__) AS time,
approx_percentile(duration_time, 0.95) as layoutAssetsTP95
WHERE
project = 'VNiHYxlRn65CRO-9O7NT0'
AND (
resource_name like 'https://static-core.mokahr.com/punch/assets/vendors%'
OR resource_name like 'https://static-core.mokahr.com/punch/assets/layouts%'
)
GROUP BY
time
ORDER BY
time DESC
layout 执行, abRoute 后续不会阻塞,不统计abRoute- 获取规则
userInfo~~~~异步,不影响最终结果
getJSSdkConfig 获取 api 授权相关
queryRuleAndAttendanceInfo
通知加载文件
p__punch__index.css
p__punch__index.js
project: VNiHYxlRn65CRO-9O7NT0
|
SELECT
date_trunc('day', __time__) AS time,
approx_percentile(duration_time, 0.95) as pucnhAssetsTP95
WHERE
project = 'VNiHYxlRn65CRO-9O7NT0'
AND (
resource_name like '/api/mobile/jsSdk/wechat/getJSSDKConfig%'
OR resource_name like '/api/abs/clock/clockOnPage/v2/m/queryRuleAndAttendanceInfo%'
OR resource_name like 'https://static-core.mokahr.com/punch/assets/p__punch__index%'
)
GROUP BY
time
ORDER BY
time DESC
- 获取记录
queryClockRecord
project: VNiHYxlRn65CRO-9O7NT0
|
SELECT
date_trunc('day', __time__) AS time,
approx_percentile(duration_time, 0.95) as queryClockRecordTP95
WHERE
resource_name like '/api/abs/clock/clockOnPage/v2/m/queryClockRecord%'
GROUP BY
time
ORDER BY
time DESC
⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
注意:目前实现的看板和实际 lcp 数据可能会有出入,是采用每个阶段耗时进行堆叠的策略,无中间的等待时间(例如代码执行)
⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
LCP 统计参考 https://abyss.mokahr.com/project/VNiHYxlRn65CRO-9O7NT0/dashboard?from=1669338725258&to=1669943525258
数据看板
sls 日志库:
abyss: https://sls.console.aliyun.com/lognext/project/moka-apm/logsearch/abyss
看板地址:
https://sls.console.aliyun.com/lognext/project/moka-apm/dashboard/dashboard-1669973461313-649998
图表数据类型:
⚠️⚠️⚠️⚠️注意:堆叠显示时 sql 需要倒着排,即最后显示的需要放在最前面⚠️⚠️⚠️⚠️
y1:html 加载 ttfb
y2:html 加载 reponseTime
y3:基础资源加载耗时
y4:...
以上组成 1 天的数据,循环展示 30 次
优先获取 P95