mipengine / mip2

MIP (移动网页加速器)通过优化网页JS、控制资源加载顺序,达到加速网页的效果。
https://www.mipengine.org/
MIT License
184 stars 49 forks source link

MIP 核心 v2 全量替换 v1 后,内置 mip-video 组件在部分站点表现异常 #495

Closed chenqiushi closed 5 years ago

chenqiushi commented 5 years ago

BUG 描述

背景:

迁移测试官方组件 mip-vd-baidu 时发现,该组件的实质是使用的核心内置 mip-video 组件。mip-video 在处理 https 域 下的 非 https 视频资源 时,策略 是:当处于 SuperFrame iframe 环境下时,会通过 viewer 向 sf 发送事件,sf 收到该事件后,作相应处理,跳转到另一个 http 域名进行播放。

问题:

全量替换 v2 后,使用 v2/mip.js + mip-video 的页面,如果是 https 站点,且加载 http 视频资源,点击播放,不会跳转到播放页。

如:https://m.baidu.com/mip/c/s/wzry.haosix.com/gonglue/1

复现步骤

在使用了 mip-video 的页面点击视频播放:

sf + v1/mip.js 【跳转正常】(测试需要用代理 将 v2/mip.js => v1/mip.js)

https://m.baidu.com/mip/c/s/wzry.haosix.com/gonglue/1

sf + v2/mip.js 【跳转异常】

https://m.baidu.com/mip/c/s/wzry.haosix.com/gonglue/1

sf (path 使用 wishwings) + v1/mip.js 【跳转正常】但参数获取异常,估计 sf 内部处理方式不同(测试需要用代理 将 v2/mip.js => v1/mip.js)

https://m.baidu.com/wishwings/c/s/wzry.haosix.com/gonglue/1

sf (path 使用 wishwings) + v2/mip.js 【跳转正常】但参数获取异常

https://m.baidu.com/wishwings/c/s/wzry.haosix.com/gonglue/1

综上:因为现在已经全量替换 v2,所以线上使用了 mip-video 组件加载 非 https 视频的站点,都有异常。虽然我们提供了 mip-vd-baidu 组件专门处理非 https 资源的这种情况,但如果视频没有被 mip 视频服务抓取时,还是会降级处理,出现上述问题。

可能原因分析

v1/mip.js 发送的事件名称为:mip_video_jump

v2/mip.js 发送的事件名称为:mip-video-jump

目前看来,sf 在 path 为 wishwings 时,会兼容处理v1 及 v2 的事件。而其他情况的 sf 下,并不会兼容处理 v2 发送的事件。且两种 path 下 sf 对参数及跳转的处理不太一致。

关于事件这里曾经有过讨论:https://github.com/mipengine/mip2/issues/215

期望结果

使用内置 mip-video 组件的站点都能正常跳转播放

chenqiushi commented 5 years ago

问题定位,

  1. SuperFrame 对 mip 有新老两个 service,老的 service 没有兼容处理 mip-video-jump 事件。
  2. 新的 service 虽然兼容了两个事件,但处理 postmessage 参数有误,导致跳转正常却不能播放。

    SuperFrame 将一并修改上线。

chenqiushi commented 5 years ago

sf 已修复上线。