2

如何以最快速度加载 H5 页面,考虑网络不佳的情况?

 2 years ago
source link: https://www.v2ex.com/t/785087
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  程序员

如何以最快速度加载 H5 页面,考虑网络不佳的情况?

  skyrem · 8 小时 12 分钟前 · 1130 次点击

如题,公司在做一个类似收钱吧的产品

需要用户扫一个二维码,加载微信公众号下的付款页面

页面内容是一个简单的数字键盘,用于输入付款的金额

这个过程有一个微信授权的跳转,大概 200ms 左右

服务器页面的响应大概 400ms 左右

这是正常网络的情况,但是会有弱网络的情况,比如小县城的菜市场

目前是单台服务器, 加载的 js 放了 cdn,然后还有个商家上传的 logo,压缩过

老板的问题是,为什么别人(收钱吧)在(菜市场)打开很快,而我们的很慢?

求教各位大佬,还有什么办法可以加快页面加载速度 ?

阿里云的 SLB 负载均衡+高可用的服务,感觉是为了高并发和弹性扩容设计的,用在提高加载速度上效果是否明显?

20 条回复    2021-06-22 22:52:45 +08:00

37Y37

37Y37   8 小时 9 分钟前

前端:尽量减少页面资源加载,用到的所有资源全部放到 CDN,可以浏览器 F12 看下加载了哪些资源,资源加载的时间

3dwelcome

3dwelcome   8 小时 6 分钟前

把 logo 和 js 什么都存本地呗。

我一个公众号页面就是,虽然有点奇葩,但是 JS/IMG 只有第一次加载,是在服务器下载一次,以后都是脚本从 local storage 直接读取塞到页面里。

主页面就是一个空壳 HTML,很难不快。

37Y37

37Y37   8 小时 6 分钟前

后端:接口要尽可能的快,BGP 多线网络,如果有可能服务分地区 /运营商部署,没可能的话就 BGP 吧简单点

skyrem

skyrem   8 小时 6 分钟前

@37Y37 #1 加载资源很少,只有 h5 页面,css 样式写在页面内 , 一个放了 cdn 的 jquery.min, 一个商家 logo

skyrem

skyrem   8 小时 1 分钟前

@3dwelcome #2 是,现在说的就是第一次访问的情况

IvanLi127

IvanLi127   8 小时 0 分钟前

就这一个页面吗? 用 jq 写应该很小吧,你们资源有多大哦?

skyrem

skyrem   7 小时 57 分钟前

@37Y37 #3
分地区 /运营商部署 这是不是就是阿里云的 SLB
多个地区多台服务器,通过入口服务器分配连接?

skyrem

skyrem   7 小时 55 分钟前

@IvanLi127 #6 10kb 以内吧,连商家 logo

kop1989

kop1989   7 小时 51 分钟前

如果是针对性解决的话:
1 、可以研究一下收钱吧这个页面的 cdn 部署。
2 、对比你的页面和收钱吧页面的业务逻辑以及素材大小有没有差距。

这样基本上就能应对“收钱吧”快,但你们慢的问题。

skyrem

skyrem   7 小时 43 分钟前

@skyrem #8 说错,100kb

3dwelcome

3dwelcome   7 小时 40 分钟前

如果只是第一次下载优化,那就不用 jq, 自己 js 手写 dom,这样 jquery.min 也不需要下载了。

IvanLi127

IvanLi127   7 小时 40 分钟前

要不考虑把 jq 去掉?毕竟这个库自己就挺大的。 不过既然有竟品可以分析,还是对照着抄抄吧?

IvanLi127

IvanLi127   7 小时 38 分钟前

我感觉这个 cdn 的 jq 有点可疑,你有测过这个 jquery.min.js 在网络不好的情况下加载完成要多久吗?

3dwelcome

3dwelcome   7 小时 35 分钟前

这种短链接网络优化,微信开发团队最有发言权了。

他们文章里说 HTTPS 握手太慢,所以自己发明轮子,开发了一个 MMTLS 协议,来代替传统的 TLS/SSL,可以应对菜场里的网络极差情况。

我去查了一下,最主要就是优化 RTT,应该挺有效果。楼主可以和老板建议一下,开发一套 MyHTTPS 。

suzic

suzic   5 小时 34 分钟前 via Android

这种简单页面可以不用 jq 之类的库,不过看了下 100k 以内应该不算大,主要在服务端优化把

Torpedo

Torpedo   5 小时 30 分钟前

@3dwelcome 为啥不直接用 http 缓存?

MeteorCat

MeteorCat   5 小时 28 分钟前 via Android

这种直接 cdn 解决就行了

cest

cest   5 小时 25 分钟前

@3dwelcome #14 http3 0rtt, 就看营运商 udp 了

3dwelcome

3dwelcome   2 小时 46 分钟前

@Torpedo “为啥不直接用 http 缓存?” 因为是页面启动资源都很小,而资源 hash 变动后,失效后重新下载 http 缓存,是一件挺麻烦的事情。

要是应用里大的图片资源,就走正规异步 http 缓存了。

chezs66

chezs66   59 分钟前

离线化优先,PWA 或者小程序

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK