关于小程序云函数结合云存储和CDN上传的使用分享

422 阅读2分钟

一、背景:

1、为什么要使用云函数

因为小程序本身有体积大小的限制(2M),云函数可以帮忙处理一些数据,将部分代码放到云上。 优点: 可以不使用分包等形式减小小程序的体积。 缺点: 增加了数据接收耗时,因为多了一层请求,有收费。

2、什么情况下要使用CDN上传?

云函数对上传的数据大小有限制,当 data 中包含大数据字段(建议临界值 256KB),建议使用 wx.cloud.CDN 标记大数据字段,标记后在调用云函数时,该字段的内容将会上传至临时 CDN,然后在云函数中接收到的该字段值将是 CDN url,可在云函数中下载访问。

CDN的建议是128k就可以使用CDN了

3、什么情况使用云存储?

是因为云函数返回的数据大小限制是1M, 当云函数返回的数据超过1M时,云函数的结果会被拦截,无法返回,导致报错,计算大小的方式是utf-8标准,可以通过 Buffer.byteLength 方法计算。

二、实现

1、实现一个云函数(官方有示例)developers.weixin.qq.com/minigame/de…

image.png

在云函数目录下创建一个云函数并自动生成一串入口文件代码;

// 云函数入口文件

const cloud = require('wx-server-sdk')

cloud.init() // 云函数入口函数

// event  就是小程序端调用云函数时传入的参数,外加后端自动注入的小程序用户的 openid 和小程序的 appid。context 对象包含了此处调用的调用信息和运行状态,可以用它来了解服务运行的情况

image.png

端上初始化并配置环境

image.png

当数据大小正常情况下,只需要按上述方式进行配置,就可以使用云函数了。

2、实现cdn上传数据developers.weixin.qq.com/minigame/de…

CDN 方法可以接收三种参数类型:

  • String
  • ArrayBuffer
  • 文件路径定义对象

我们以字符串的形式进行介绍,主要是针对需要一些数据量较大的json对象或者对象数组转换的字符串

调用方式

image.png

在调用云函数时,系统会自动上传相应数据到临时 CDN,最终云函数内接收到的该字段将会是一个 CDN 地址,可在云函数内请求下来。如下图

image.png

云函数通过调用get请求,将数据请求后,对结果进行处理。

3、实现云存储(文件存储)

云存储也分小程序端和云函数端2端,我们以云函数端为例developers.weixin.qq.com/minigame/de…

调用方式

image.png

未完待续(还差接收结果)。。。。。。。