事由:
这几天,一同事反馈,微信短链(URL Link)拉起小程序速度很慢,让我帮着排查下,我试了下,确实很慢,于是仔细分析了下,发现了个容易被忽视的问题。
现象
微信短链(URL Link,如同 wxaurl.cn/xxxx )在短信中被点击后,会打开微信的一个中转页,该页会唤起微信,进而加载指定的小程序页面。目前体验下来,是这个页慢了,白屏了太长时间。我把这个页面拷到电脑中访问,白屏时间仍然很长……
原因分析:
猜测1:网络问题?
结论:应该不是,目前已深夜,就我一个人在上网,而且上的不是一般网,是电信的千兆网,打开其它网页速度飞快,应该不是网络问题
猜测2:设备问题?
结论:应该不是,电脑还行,MBP 16G内存,目前其它啥活也没干,电脑C面摸上去也没发烫
猜测3:那个网页的问题?
结论:有可能是,但有可能不是,微信系大厂啦,各项优化应该做得比较到位,它哪能出问题?[DOGE],嗯~还是调试下看看,接下来在凌晨两点来个一顿调……
水落石出:
终究是错付,微信的唤起页出问题了,有一个加载巨慢的JS阻塞了页面,拖慢了整体流程。经多次分时段访问,仍可重现,已反馈给厂家。
柳暗花明:
其它文件加载非快,这个JS文件加载非慢,蹊跷啊
这个域名看着有些眼熟,原来是国际上免费的CDN服务jsdelivr,国外用得比较广。为啥我这访问起来这么慢?查一下!
原来是映射到东京的服务器去了,这这这,还搭上国际专列了,难怪慢得令人发指。还有,东京这么热,传输线路温度一高电阻就会上升,更会影响传输速度哇。(斜体这句是冷笑话,没看懂请跳过)
不过它是CDN服务嘛,不同区域的人请求,会被映射到不同城市节点服务器去,难道我这的请求被映射到东京的节点是个例?
掏出站长站的工具测试,发现还真不是个例,咱们各省份的请求,几乎都被指到日本节点服务器去了,大部分是东京服务器,小部分是大阪的服务器,说好的jsdelivr拥有国内的众多节点服务器呢?
CDN节点这玩意讲究近水楼台先得月,太远的不得劲啊~
结论:
大家的商用项目请不要加载jsdelivr上的资源,它可能会拖慢页面显示速度,要是使用网上提供的一些JS文件CDN地址,请注意辨别是不是在它上面。免费的香归香,但是咱们要保障项目稳定么不是,而且它五六个月前才炸过(传送门)