更优雅的微信小程序性能优化

293 阅读2分钟

用户体验始终是一个产品的产品力最好的体现,注重产品的用户体验可以为公司带来多方面的好处,包括用户满意度、竞争优势、用户参与、支持成本和品牌形象等。通过提供出色的用户体验,公司可以增加用户忠诚度,吸引更多用户。 前端这一块在用户体验方面有很多成熟的优化方案,前端页面加载性能优化更是提高网页加载速度和用户体验的重要方面,包括不限于资源处理、网络优化等大方向,细分下来又会有很多具体的方案。在面对图片等静态资源较多的页面我们一般都会使用大图片分割、CDN分发、使用不同格式的图片资源,站位图片等方式。但是在一些情况下资源加载的速度很大程度受到网络状况的影响,即使做了这些优化策略也不是能很好的提升体验,当然使用缓存在二次进入时会很有用处,但是首次进入呢?很多时候首次体验的产品印象直接决定用户的流失率,所以提升首次进入的用户体验至关重要。 在面对弱网环境下如果我们能检测到用户的网络状态的话,依据网络形态给用户下发不同分辨率的图片资源,尽可能在有限的条件下给用户最好的用户体验和加载速度。

1.浏览器环境

在浏览器环境中,可以使用navigator.connection对象来获取网络状态信息。 image.png

  1. navigator.connection.downlink:表示设备当前的下行数据传输速度,以 Mbps(兆位每秒)为单位。

  2. navigator.connection.effectiveType:表示设备当前的有效网络连接类型,即网络连接的实际类型和质量。可能的取值包括:

    • "slow-2g":非常慢的 2G 连接。
    • "2g":2G 连接。
    • "3g":3G 连接。
    • "4g":4G 连接。
    • "5g":5G 连接。
  3. onchange: null:事件监听器。

  4. navigator.connection.rtt:表示设备当前的往返延迟时间(Round-Trip Time),以毫秒为单位。它是从设备发送数据到服务器并返回的时间。

  5. navigator.connection.saveData:表示用户设备当前是否处于节省数据模式。可能的取值为 true(用户启用了节省数据模式)或 false(用户未启用节省数据模式)。 通过navigator.connection.effectiveType这个属性就可以实现上述语句不同网络形态给用户下发不同分辨率的图片资源了 使用示例:

  const networkType = navigator.connection.effectiveType;
  console.log("Network Type:", networkType);
} else {
  console.log("Network type information is not available in this browser.");
}

浏览器兼容:

image.png

2.微信小程序环境

微信小程序中无法使用navigator.connection.effectiveType,但是微信官方文档给出了获取网络类型的api:wx.getNetworkType

微信官方文档:developers.weixin.qq.com/miniprogram…