- @官方工作人员:我的其他小程序云开发后台已提示切换付费模式,可是有一个小程序一直没提示,是什么问题?
我的其他小程序云开发后台已提示“升级基础套餐+按量付费的模式”,点击入口就可以升级。 有一个小程序一直没提示升级基础套餐+按量付费的模式,原本那个显示升级入口的地方显示购买静态网站的资源(已注销静态网站功能,下图中的通知点进入,也没有购买静态网站资源的入口,而是购买短信包),是不是升级云开发套餐的入口被这个遮挡住了?担心不升级云开发套餐到了9月25日资源突然被删掉了。谢谢解答! 小程序appid:wxae4263c9750af5db [图片]
2022-09-02 - 如何看云开发价格暴涨50倍?
如题,顺便问一下,各位大佬有什么推荐的迁移方案?
2022-07-08 - 微信云开发计费调整调用次数怎么算?
这四个统一归到调用次数了吗?每天多支出100+。。。。。 https://developers.weixin.qq.com/community/minihome/doc/0000a680588d3891fa2ec250c51401?page=1 [图片]
2022-07-13 - 云开发涨价真的有这么夸张吗?
云开发涨价真的有这么夸张吗?如果是真的,难道你们忘记前期是怎么宣传云开发的优势了吗? 现在我们业务逻辑全在云开发上,你们这样涨价,简直是卸磨杀驴! [图片]
2022-07-05 - 微信云开发计费调整公告
各位微信云开发用户: 感谢大家一直以来对微信云开发的支持。由于云计算成本整体上升,为了继续为各位用户提供稳定可靠的服务,微信云开发将于 2022 年 08 月 18 日,对计费方式进行如下变更,部分指标价格将有所上浮。 新计费模式下,新用户免费使用 1 个月后,统一使用 “基础套餐+按量付费” 模式:购买带有一定配额的基础套餐后,超出套餐配额部分再按照实际使用量付费。 基础套餐 [图片] *新用户首月免费配额:与基础套餐一致,可满足大部分情况下的开发体验需求 *5 折折扣有效期至少延续至 2022 年底,后续折扣如有变化将另行通知 按量付费 [图片] 【指标说明】 1、调用次数:合并原多项指标统一计价,具体为 “云存储上传操作”、“云存储下载操作”;“数据库读操作”、“数据库写操作” 及新增指标 “云函数调用操作”; 2、容量:合并原多项指标统一计价,具体为 “存储空间" 及 "数据库容量"; 3、云函数日志服务:本次新增计费指标,建议通过优化日志存储策略降低该指标费用。 新用户手动触发确认开始使用后,将拥有 1 个月免费权益,体验期间的环境配额与基础套餐相同,可选择是否进行超额按量付费。 现有用户可以在「微信开发者工具-云开发控制台」或「微信云服务助手小程序」查询过往用量情况后,使用 价格计算器 预估新价格。 在计费方式升级生效之日(2022.08.08)起,对现有用户均提供至少 1 个月的操作缓冲期,期间会推送提醒及提供切换入口,用户可自由选择是否切换新的计费方式,超时未切换的云开发环境将会停服释放。缓冲期内切换成功的用户将会获得额外代金券。 对于当前月调用次数 >100 万次的帐号,本次调整将不直接生效,后续将由专业架构师联系或独立推送指引切换到合适配额的企业旗舰版本。 自本公告发布之日起,对于原已购预付费套餐、资源包的用户,仍然可正常使用原已购资源,直至原约定套餐到期或用完。现有旧预付费套餐不再支持续费超过一个月,现有旧资源包不再支持新购。 微信云开发将继续为各位用户提供简单易用安全的专业 Serverless 开发服务,感谢大家的支持。 Q&A 1、此次调整,意味着我的费用会增加吗? 是的,由于云计算整体成本的持续上升,为了能够长期给各位开发者提供低门槛的开发服务,我们对于部分计费指标进行了价格调整,在调整后大部分的开发者费用会一定程度的上浮。 2、我如何预估调整之后的费用是多少呢? 新计费生效后,在缓冲期内,开发者可查看新指标下的用量情况,或者根据过往用量,使用 价格计算器 估算调整之后的费用。 我们根据测算,为大部分开发者提供基础套餐配额以满足线上服务,如你的实际用量没有超过基础配额,也没有使用扩展功能,那么每月消费即为 19.9 元。 3、我需要在哪里操作切换新计费呢? [图片] 微信云服务助手小程序码 在计费方式升级生效之日(2022.08.08)起,开发者可前往「微信开发者工具-云开发控制台」或「微信云服务助手小程序」进行操作切换。按照过往的计费信息下发惯例,我们通过「微信公众平台公众号」向管理员推送计费变更信息与切换入口。 4、现在的环境是否可以继续使用呢? 新计费生效后,已购买的预付费套餐可正常使用至原到期时间,已购买资源包的按量付费环境可正常使用至原资源包到期时间,均不会存在直接失效或自动退费的情况。在切换到新计费方案后,原有环境即可持续正常使用。 5、如果超时切换会有什么影响呢? 若原环境到期且超出切换缓冲时间,则该环境将进入停服释放流程,数据不可找回,请开发者及时操作。 6、以上新计费方案生效后,我有多长时间可以决定是否继续使用云开发呢? 对于当前月调用次数 <100 万次的帐号,从公告发布日至新方案生效后的一个月,期间可进行是否继续使用的决策;计费方式升级生效之日(2022.08.08)起,我们也会通过上述 Q&A 3 说明的方式中提供切换入口与下发消息,此时你仍然有至少 1 个月的缓冲期做出决定。对于当前月调用次数 >100 万次的帐号,将有专业架构师联系指引切换到合适配额的企业旗舰版本,期间产生的消耗仍然按旧方案计费。我们会为大额消耗用户提供适当优惠,同时对于不希望继续使用云开发的此类帐号提供不低于 3 个月的缓冲时间。如有其他问题,可前往「微信开发者工具-云开发控制台-帮助-工单」主动联系我们。 7、我自行测算预估后觉得新方案有点贵,有什么好建议吗? 本次调整,价格上涨指标为 “调用次数”、“容量”和“CDN 流量”,建议相应进行技术优化,减少不必要的多次调用或存储内容,可有效控制费用;此外新增计费指标为日志服务,可在「微信开发者工具-云开发控制台-云函数-日志」中查看日志使用情况,并优化日志使用逻辑,避免上报大量冗余的日志信息导致不必要的费用支出。 若评估后认为新的费用方案已不适用于你的业务,可在上述充足的缓冲期内自行选择迁移业务至更合适的服务。 微信云开发团队 2022年7月4日
2022-08-08 - 小程序,突然大面积报 ReferenceError: define is not defined ?
使用uniapp开发的小程序,昨天晚上还是好的,没有异常报错 今天早上来打开准备继续开发,但是突然报 ReferenceError: define is not defined [图片] 我看了一下这个 define ,是一个公共方法,类似于 require import 这样的,很多地方会用到,一旦 not defined ,整个就挂了。 网上搜了一下有说是微信开发工具版本问题,我就升级了一下微信开发者工具的版本,现在是最新版,如下 [图片] 这个可咋整,请官方给个思路?
2022-02-24 - 小程序顺丰 这个效果怎么实现的?
第1部分:navigation bar 自定义这个我知道怎么做。 第2部分:多图轮播,而且和第1部分看起来了就是一个整体在动。 切换如下图,过滤都很自然。 [图片] [图片]
2022-05-24 - 请问一下这种搜索出来的小卡片怎样配置?
直接搜索小程序,小程序下方会出现这种小卡片,,点进去会跳转到相应的页面,请问这种在哪里配置? [图片]
2021-11-05 - 云函数资源4万GBS是多少?能否举例量化说明?
假设一个云函数使用256M内存,平均运行时长为500ms 那么每次调用需要消耗0.25G*0.5S=0.125GBS 4万GBS一共能支撑这个云函数运行32万次
2020-10-28 - 小程序列表页数据量太大,页面崩溃怎么办?
首先明确是有上拉加载功能的,就是一直上拉,一直上拉,一直加载,加载了几千条,然后页面崩溃,一般你们是怎么解决的这种情况的,有大佬有方案么
2022-03-24 - 使用 WXS 实现 SwipeCell 滑动单元格 功能(附代码片段+注释)
[图片] [图片] [图片] 之前用的是有赞的 SwipeCell 滑动单元格 ,但是列表数据超过20条 ,无论是PC还是真机页面都会卡死,后面发现有赞是用 setData 才会卡顿,然后动手用 wxs 写了一个,真香,代码片段 https://developers.weixin.qq.com/s/cIViG6mn75ss //tag方法 滑动下一个,上一个自动复原 closePrevBox(){ if(wx.tempCqSwipeCell){ if(wx.tempCqSwipeCell != this){ wx.tempCqSwipeCell.setData({ prevBox:0 }); } } wx.tempCqSwipeCell = this; } 具体可以引入代码片段看一下 https://developers.weixin.qq.com/s/cIViG6mn75ss
2022-03-23 - 小程序安全检测上线公告
为进一步提升小程序的安全性和用户体验,目前平台将对提审的小程序进行安全检测,以便能及时帮助开发者发现小程序可能存在的安全漏洞。 一、背景介绍 小程序在开发过程中若存在安全漏洞的情况,如敏感数据篡改、拖库信息泄露、WEB攻击等,容易造成小程序的安全隐患,可能带来代码易被反编译、核心业务逻辑被破译、算法易被二次打包等风险。因此,平台将对提审的小程序进行安全检测,以协助开发者提升小程序服务的安全性,同时开发者也应加强自身小程序安全漏洞监测能力,保证可及时消除潜在的安全风险。 二、审核过程 安全检测过程中,平台会模拟真实业务场景,向提审小程序的后台发送服务请求,服务器会收到来自平台(显示为:Tencent Security Team,请求IP为106.55.202.118;113.96.223.69;125.39.132.125;43.139.209.119)的请求。该请求均以较低速率进行,正常情况下不会影响小程序的正常服务。若确实出现了影响小程序正常业务的特殊情况,如用户无法进行小程序的正常访问,开发者可基于自身业务情况,对相应请求加以限频,如有其他疑问,欢迎随时通过官方社区进行反馈。 三、审核结果 安全检测的结果是小程序审核的重要参考。若小程序在安全检测中被检测到存在安全漏洞,该小程序的审核将不予通过。开发者可根据扫描报告中的修改指引,对安全漏洞进行相应修复后,再重新进行提审。 其他常见问题 Q1:可以选择不进行安全检测吗,是否会影响小程序代码提审结果? A1:安全检测是小程序审核的环节之一,所有提审的小程序均需进行,若检测中发现安全漏洞或小程序故意采取措施规避检测,该小程序的审核将不予通过。 Q2:若在小程序代码审核已结束或审核已撤销的情况下,可以停止安全检测吗? A2:若在小程序代码审核已结束的情况下,平台将持续进行未完成的安全检测直至完成,如有需要,开发者可通过平台提供的相应链接(在【小程序管理后台 → 通知中心】查看站内信即可)自行中止安全检测;若在小程序审核已撤销的情况下,平台将自动中止未完成的安全检测。 附表:安全检测内容详情 [图片]
03-08 - 小程序云开发 orderBy 排序 能否将空值排到最后?
[图片]
2019-12-20 - 聚合阶段,无法进行模糊匹配吗?
需求:aggregate().后想对某字段进行模糊搜索 现状: 目前只知道db.regexp可以模糊搜索,但是我得先级联表查询,再做其他聚合操作,才能得到我想要进行模糊匹配某字段的集合,无法使用db.regexp了。 而match只能精确匹配.... 求助各位大佬!
2019-11-16 - 如何彻底解决小程序滚动穿透问题
背景 俗话说,产品有三宝:弹窗、浮层加引导,足以见弹窗在产品同学心目中的地位。对任意一个刚入门的前端同学来说,实现一个模态框基本都可以达到信手拈来的地步,但是,当模态框里边的内容滚动起来以后,就会出现各种各样的让人摸不着头脑的问题,其中,最出名的想必就是滚动穿透。 什么是滚动穿透? 滚动穿透的定义:指我们滑动顶层的弹窗,但效果上却滑动了底层的内容。 具体解决方案分析如下: 改变顶层:从穿透的思路考虑,如果顶层不会穿透过去,那么问题就解决了,所以我们尝试给蒙层加catchtouchmove,但是发现部分场景无效果,那么就不再赘述了。 改变底层:既然是顶层影响了底层,要是底层不会滚动,那就没这个问题了。 如何改变底层解决该问题呢? 不成熟方案: 底部页面最外层view设置position: fixed;页面不可滚动,但是这个时候会导致页面回到顶部。 滚动时监听滚动距离,弹窗时记录滚动位置,关闭弹窗后使用wx.pageScrollTo回滚到记录的位置。 成熟方案 使用page-meta组件,通过该组件我们可以操作Page的style样式,类似于h5里body设置overflow: hidden; 控制页面不可滚动。文档地址:https://developers.weixin.qq.com/miniprogram/dev/component/page-meta.html 使用wx.setPageStyle设置overflow: hidden, 也可以实现给Page组件设置样式。) page-meta组件: 通过该组件我们可以直接操作[代码]Page[代码]组件 ,我们给它的wxss样式overflow动态设置[代码]hidden[代码]or[代码]visible[代码]or[代码]auto[代码] 就可以控制整个页面是否可以滚动。 [图片] wx.setPageStyle方法: 调用这个api,动态设置它为hidden/auto,用于控制页面是否可滚动,主要用于页面组件内使用,比如封装好的弹窗组件,就不用单独写page-meta组件了。。 [代码]wx.setPageStyle({ style: { overflow: 'hidden' // ‘auto’ } }) [代码] 老规矩,结尾放代码片段: https://developers.weixin.qq.com/s/U6ItgQmP7upQ 拓展 支付宝小程序虽然存在page-meta组件,但是由于内核为69版本,给page设置overflow: hidden 也无法控制底部元素不可滚动,目前已联系支付宝的底层开发同学提供API控制页面disableScroll,目前正在封装Appx,近期开放。
08-06 - 请问小程序流量主广告收益还有救吗?收益从8月份跌去一半之后,这次元旦过后又迎来大跌?
到底是广告主投入少了,还是流量主内部搞鬼,整个分成制度都是暗箱操作,去流量主客服询问也都是官方套话。 辛辛苦苦运营两年,大概2w左右日活,每天收入那么一丁点!明明访问量,DAU,广告曝光、点击率这些一两年来都很稳定,收入却一跌再跌,官方一点说法都不给,实在寒心! 元旦过后收入每天都在跌, DAU和用户活跃度看,一直都很稳定,稳中有升,广告收入却直接腰斩。 https://developers.weixin.qq.com/community/develop/doc/000248c817071091904df050051800?jumpto=comment&commentid=0008a2e3ac4eb0af586dc75bd514
2022-01-25 - 基于云开发的答题活动小程序v2.0,终于赶在11月最后一天完成了
是的,你没听错没看错。这个,就是基于云开发的答题活动小程序,并且是v2.0版本! 之前在做“手把手教你搭建答题活动小程序v1.0系列文章”的教程的时候,我就已经马不停蹄地在构思v2.0的迭代版本的内容,以及持续地投入时间和精力进行设计与开发搭建中了。 终于!赶在11月最后一天!!完成了!!! 答题活动小程序v2.0,主要包含六大功能模块页面,首页、答题页、结果页、活动规则页、答题记录页、排行榜页。接下来,我简单的归纳总结一下,分析一下技术要点,以及分享源码给大家。与君共勉。 [图片] 先看看效果吧[图片] [图片] 再聊聊技术栈以微信原生小程序+云开发为主,使用微信原生小程序开发还是比较方便的,可以搭载云开发能力的小程序端SDK,使用javascript就能操作数据库。 当前版本功能微信答题活动小程序,当前版本是v2.0,简单地罗列一下实现了的功能: 活动规则页答题记录页排行榜页题库随机抽题查询历史成绩微信授权登录获取微信头像和昵称等首页、答题页、结果页实现页面间跳转功能实现转发分享答题成绩功能实现用云开发实现查询题库功能实现动态题目数据绑定答题交互逻辑切换下一题提交答卷保存到云数据库集合系统自动判分答题结果页从云数据库查询答题成绩 体验一下最后,需要来体验一下吗?欢迎各位在底部留言或者提提bug,然后想想,如果你会怎么解决这个问题。源码传送门,答题活动小程序v2.0 [图片] v1.0前程回顾这里可以简单地做一个前程回顾,有兴趣的可以去翻一翻,阅读一下这些短篇教程。真的做得很用心,特别适合新手小白快速入门微信小程序与云开发。 手把手教你搭建答题活动小程序系列文章: 消防安全知识竞答活动小程序 https://developers.weixin.qq.com/community/develop/article/doc/0002ca223b8370d5c9fce586e56813 安全知识线上答题活动小程序-答题功能解读 https://developers.weixin.qq.com/community/develop/article/doc/0008ea6e43894864020d8452456c13 不破不立,分享源码,优质的消防安全知识竞答活动小程序 https://developers.weixin.qq.com/community/develop/article/doc/000c08d38205f04c3f0d25f075c013 手把手教你搭建消防安全答题小程序-首页 https://developers.weixin.qq.com/community/develop/article/doc/000242a28904a022570d57cc856c13 手把手教你搭建消防安全答题小程序-答题页 https://developers.weixin.qq.com/community/develop/article/doc/000c282e6d0a78b86c0d02af555413 手把手教你搭建消防安全答题小程序-答题结果页 https://developers.weixin.qq.com/community/develop/article/doc/00064c224f0560f9790d4069256c13 手把手教你搭建消防安全答题小程序-实现页面间跳转功能 https://developers.weixin.qq.com/community/develop/article/doc/0008400ebac4b0938d0d4ca8e5bc13 手把手教你搭建消防安全答题小程序-实现转发分享答题成绩功能 https://developers.weixin.qq.com/community/develop/article/doc/00064a97294000c29e0d1154d5b813 手把手教你搭建消防安全答题小程序-用云开发实现查询题库功能 https://developers.weixin.qq.com/community/develop/article/doc/0002cac6f7018077a00d7a36456413 手把手教你搭建消防安全答题小程序-将用云开发获取到的题目渲染到答题页面 https://developers.weixin.qq.com/community/develop/article/doc/000c04a413c49850d90d281ec56c13 手把手教你搭建消防安全答题小程序-实现答题功能以及提交答卷到云数据库 https://developers.weixin.qq.com/community/develop/article/doc/00006654a7cce0d2e40d174755b413 手把手教你搭建消防安全答题小程序-在结果页中实现从云数据库查询成绩并展示 https://developers.weixin.qq.com/community/develop/article/doc/000a0e480f86b012f60da776c51413 基于云开发的答题活动小程序v1.0,开开开源啦 https://developers.weixin.qq.com/community/develop/article/doc/0006c6920245e07df20dccbde56c13 基于云开发的微信答题活动小程序v1.0搭建部署帮助文档 https://developers.weixin.qq.com/community/develop/article/doc/000ce8d4ef0dc864791d0f2ce56c13 用云开发搭建的微信答题小程序v1.0 https://developers.weixin.qq.com/community/develop/article/doc/000a2adbde4918698e1d5b7405b013
2021-11-30 - 如何实现一个简单的swiper效果
简单的siwper效果,又是逛社区发现老哥提的想要该效果,那么有需要,咱们就得上啊: 效果图: [图片] 上代码: wxml [代码]<view class="container"> <swiper duration="200" previous-margin="140rpx" next-margin="140rpx" bindchange="currentHandle" circular="{{true}}" class="swiper-out"> <block wx:for="{{punchList}}" wx:key="*this"> <swiper-item class="swp-item {{current === index ?'active-item': ''}}"> <view class="slide-image" style=" background: url({{item.bannerUrl}}) no-repeat center center;background-size: 100% 100%;" id="{{index}}"></view> </swiper-item> </block> </swiper> <view class="swp-dot"> <view class="square-12 m-r-8 {{current === index ?'active': ''}}" wx:for="{{punchList}}" wx:key="{{index}}"></view> </view> </view> [代码] JS [代码]const app = getApp() Page({ data: { punchList: [{ "bannerUrl": "https://qiniu-image.qtshe.com/1536067857379_122.png" }, { "bannerUrl": "https://qiniu-image.qtshe.com/1536068379879_115.png", }, { "bannerUrl": "https://qiniu-image.qtshe.com/1536068319939_230.png", }, { "bannerUrl": "https://qiniu-image.qtshe.com/1536068074140_695.png", }, { "bannerUrl": "https://qiniu-image.qtshe.com/1536068213758_796.png", }], current: 0 }, currentHandle(e) { let { current } = e.detail this.setData({ current }) } }) [代码] wxss [代码].container { display: flex; flex-direction: column; align-items: center; justify-content: space-between; height: 100vh; } .slide-image { height: 600rpx; width: 400rpx; margin-top: 20rpx; overflow: hidden; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: 10rpx; } .swiper-out { width: 750rpx; height: 660rpx; margin-top: 60rpx; } .active-item .slide-image { box-shadow: 0 5rpx 20rpx 3rpx rgba(0, 0, 0, 0.15); } .swp-item { width: 400rpx; display: flex; flex-direction: column; align-items: center; padding-top: 4rpx; opacity: 0.6; } .active-item { opacity: 1; } .swp-dot { display: flex; justify-content: center; flex: 1; margin-top: 18rpx; } .m-r-8 { margin-right: 8rpx; } .m-l-8 { margin-right: 8rpx; } .square-12 { width: 12rpx; height: 12rpx; background-color: #d8d8d8; border-radius: 6rpx; transition: width 0.2s linear; } .active { background-color: #3c3c3c; width: 36rpx; transition: width 0.2s linear; } [代码] 代码放完了,看下效果吧。代码片段如下: https://developers.weixin.qq.com/s/DCK6HJmw7kaZ
2019-12-19 - 上传二张流量主收益截图,给大家打打气?
上传二张流量主收益截图,给大家打打气? 都说流量主越来越不值钱了,看看这,希望坚持在小程序一线的同学,不要放弃挣扎,做一条咸鱼总有翻身的一天哦~~ [图片][图片]
2021-11-22 - 小程序 调用云函数向数据库写数据,不自动添加_openid字段?
小程序 调用云函数向数据库写数据,不自动添加_openid字段?? 用模拟器和真机测试,都不添加这个字段,这是怎么回事?
2019-09-09 - 如何提升你的云函数性能
在使用云开发一段时间后,你一定会遇见一个问题:虽然云函数非常的方便,但我的云函数似乎性能不够好,为什么我的云函数每次加载都需 2 ~ 3 秒种,时间太长了!。 这篇文章,就来告诉你,应该如何提升你的云函数性能。 如何了解云函数运行情况? 在了解如何优化云函数的运行情况之前, 我们需要先了解,如何查看当前的云函数运行情况,这样才能有个对比。 [图片] 打开小程序开发者工具,并打开你的项目 进入到你要调试的页面,打开调试器 调用云函数,并在调试器中切换到 Network 页面,找到你的请求。 点击你的请求,然后切换到 Timing 页面,查看具体的情况。 在这个页面中,你可以理解其中的 Waiting(TTFB) 是你发起请求到你接收到返回结果的第一个字节的时间,简单的来说,就是服务器计算结果需要花费的时间。而下方的 Content Download 则是下载内容所需的时间,你可以理解是表现出网络速度快慢的数据。 总结来说,就是如果 Waiting TTFB 的值比较大,你就去优化云函数性能。如果 Content Download 的数值毕竟大,你就需要优化网络情况 优化 Waiting TTFB 云函数的运行机制 Waiting TTFB 的优化是云函数性能端的优化,那么在优化之前,我们就需要先来了解一下云函数的运行机制,以便帮助我们了解应该如何去进行性能优化。 [图片] 在蕴含运行时,具体的顺序是这样的 用户发起请求,请求发送到云开发的后台 云开发后台的调度器将请求分发给下方的执行的 worker 、容器 容器创建环境、下载代码 执行代码 在这个过程中,发起请求到云开发、调度器调度速度、调度器传递信息到容器、函数调用等,都是可以优化的,但是我们在具体的使用过程中。这些大都需要由云开发的工作人员来完成,对于我们自己来说,只能去尽可能的优化容器内部到代码层面的东西。 接下来,我们可以看看更细致的调用逻辑。 [图片] 在云开发中,我们可以将调用分为三种类型: 冷启动:图中的红色阶段,需要重新创建容器、下载代码,耗时最长 温启动:图中的黄色阶段,需要下载代码,耗时较长 热启动:图中的蓝色阶段,不需要下载代码,耗时最短 我们可以看到,最快的,是热启动,函数不需要创建容器,不需要启动函数就可以完成执行,显然比要创建容器或要下载代码的温启动和冷启动速度更快。这样,我们就得到了优化云函数性能的第一个方法 1. 让你的云函数每次调用都走热启动 当我们可以让我们的云函数的每一次调用都走热启动,少了容器的创建和函数的部署,请求的速度理所当然的要比冷启动和温启动更快。 我们可以测试一下,我设置每秒调用一次云函数,看看 TTFB 的变化。 [代码]setInterval(()=>{wx.cloud.callFunction({name:'profile'})},1000) [代码] 函数内代码是默认创建的云函数代码。 则对应的执行效果如下 [图片] 可以看到,函数的执行时间从第一次的 1.2s 降低到了 200ms左右,性能提升了 80%,我们仅仅是简单的提升了函数的调用频次,就可以实现提升函数的调用性能,这就是热启动带给我们的价值。 实施方案 如果你需要足够高的性能,不妨借助云开发的定时器,定期唤起你的容器,从而为你的容器保活,确保你的函数时刻被热启动。 2. 缩小你的函数大小 在前面我们曾介绍过,云函数在启动过程中,会创建容器和下载代码。创建容器的过程对于开发者来说不可控,不过我们可以使用一些方法,缩小我们的代码,提升代码的下载速度,比如说,缩小我们的函数代码。 这里我们可以做个测试,这里我创建了两个函数,两个函数的代码完全一致,不同的是,在实验组的函数中,我加入了一个 temp 变量的声明,这个变量的值是一个非常长的字符串,从而使得两个函数的大小分别是 68K 和 4K。 接下来,我们看看二者的执行时间。 [图片] 我们会发现,几乎没有差距的代码,因为加入了变量声明的因素,在性能上会略慢几毫秒,后续随着容器的不断复用,函数的之间的差距也越来越小,几乎可以忽视。 实施方案 对于你的代码,要尽可能的精炼,减少无用的代码,减少代码下载所需时间。 3. 削减不需要的 Package 除了下载代码以外,还需要下载 Node 环境运行所需的依赖包,虽然云开发可能针对 Node Modules 已经做了缓存,但依然存在下载的时间差区别,这里我也做了一个实验。 空包:什么都没装,把 wx-server-sdk 都卸载掉了。 复杂包:装了 Mongoose、sequelize、sails 等依赖的包。 函数逻辑上也相差无几,都是返回 Event ,则结果如下 [图片] 我们发现,前三次可能是因为涉及到依赖包的下载问题,所以前三次的时长大小对比特别的明显,而从第四次开始,二者的区别就不大了,可能是因为依赖已经完成了缓存,所以可以直接使用缓存来完成函数的执行。 实施方案 你可以选择看看你的 package.json ,看看其中是否有你不需要的依赖,将其删除,仅保留有需要的依赖,可以有效提升你的代码执行速度。 优化 Content Download 如果你想要优化 Content Download ,核心需要优化的是两个点: 手机到服务端的节点的距离和速度 内容的大小 前者一般来说,你可以通过切换不同的网络环境来实现优化,比如从 3G 切换到 4G ,从 4G 升级到 5G,这些都可以提升你的手机到服务端节点之间的速度。 此外,还可以借助内容分发网络 CDN 能力来完成缩小你到服务端节点之间的距离,不过对于云函数来说,因为你不可控,无法控制,所以这一点不再谈。 这里补充一句,云开发的文件存储都是有 CDN 的,因此,你通过云存储下载的文件才会比别人更快。 后者则一般通过调整代码来完成,比如只返回必须的资源,对于不需要的内容,不再返回,或压缩返回。 总结 最后,我们回顾一下这篇文章中介绍的优化云函数的方法: 函数下载性能优化 保持函数容器的热启动,提升函数启动性能 缩小函数大小,提升代码下载速度 削减不必要的包,减少依赖大小 网络优化 使用更好的网络,比如 Wi-Fi 云函数中仅返回所需要的内容,减少下载时间。 以上这些方法,你都在你的函数中试过么?有没有其他的优化方法?欢迎你与我分享。
2019-12-08 - async await 如何捕获 uncaught 报错?
我这样写的代码应该如何捕获 uncaught 错误呢?then 里面要怎么写? await wx.cloud.callfunction({ name:xxx, data:{} }).then()
2021-11-06 - 云开发如何调用第三方api?非服务市场的api,比如聚合、百度之类的api
云开发如何调用第三方api?非服务市场的api,比如聚合、百度之类的api
2020-09-11 - 小程序调用第三方API如何实现?
现在准备做一个项目包含:小程序、服务端、后台管理web,就是小程序提交数据,web后台管理进行处理,我想自己写服务端,不用云数据库能力 我想问下:在网上看说,第三方服务必须是 备案的且https,这个是么? 解决方案: 1.自己编写云函数 调用我自己的服务端, 2小程序调用云函数 就是用云函数做一个代理转发的作用,这样可行么
2020-12-31 - 官方组件默认样式修改的对应class
swiper面板指示点: .wx-swiper-dots.wx-swiper-dots-horizontal{ margin:20px //调整位置 } .wx-swiper-dot{}//指示点未选中样式 .wx-swiper-dot-active{}//指示点选中样式 button去除边框: button::after { border: none; } checkbox.wx-checkbox-input{}//未选中的框 .wx-checkbox-input.wx-checkbox-input-checked{}//选中的框 .wx-checkbox-input.wx-checkbox-input-checked::before{}//选中的框里的小勾 radio.wx-radio-input{}// 未选中 .wx-radio-input.wx-radio-input-checked{}//选中 .wx-radio-input.wx-radio-input-checked::before{}//选中的小勾 progress.wx-progress-inner-bar{}//已选择的进度条 switch.wx-switch-input{}//
2021-10-29 - 10月28日流量主异常!急急急管理员是否可以解答一下?@社区技术运营专员-娇华
10月28日拉取量与曝光量无差,流量主收入差异巨大,请管理员查看一下是否统计异常[图片]
2021-10-29 - 小程序纯前端将数据导出为excel表格
网上有许多文章是讲述小程序将数据导出为excel表格的,但大多需要经过请求服务端,再加上云存储。那一套逻辑之前做后端的时候就玩过了。很多时候,我们浏览页面时数据已经从服务端获取到本地了,直接将之导出即可,再走服务端,实为多此一举。为了减轻服务端压力,于是便有了这篇文章。本文章介绍如何在小程序使用纯前端技术将以获取到的数据导出为excel表格。文末有代码片段 xlsx插件文档 sheetjs插件文档 [代码]const XLSX = require('../utils/excel.js') Page({ data: { }, onLoad() { }, exportData() { // 数据源 const data = [{ code: 1, name: 'A', }, { code: 2, name: 'B', }, { code: 3, name: 'C', }, { code: 4, name: 'D', }] // 构建一个表的数据 let sheet = [] let title = ['序号', '姓名'] sheet.push(title) data.forEach(item => { let rowcontent = [] rowcontent.push(item.code) rowcontent.push(item.name) sheet.push(rowcontent) }) // XLSX插件使用 var ws = XLSX.utils.aoa_to_sheet(sheet); var wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, ws, "用户表"); var fileData = XLSX.write(wb, { bookType: "xlsx", type: 'base64' }); let filePath = `${wx.env.USER_DATA_PATH}/用户表.xlsx` // 写文件 const fs = wx.getFileSystemManager() fs.writeFile({ filePath: filePath, data: fileData, encoding: 'base64', bookSST: true, success(res) { console.log(res) const sysInfo = wx.getSystemInfoSync() // 导出 if (sysInfo.platform.toLowerCase().indexOf('windows') >= 0) { // 电脑PC端导出 wx.saveFileToDisk({ filePath: filePath, success(res) { console.log(res) }, fail(res) { console.error(res) util.tips("导出失败") } }) } else { // 手机端导出 // 打开文档 wx.openDocument({ filePath: filePath, showMenu: true, success: function (res) { console.log('打开文档成功') }, fail: console.error }) } }, fail(res) { console.error(res) if (res.errMsg.indexOf('locked')) { wx.showModal({ title: '提示', content: '文档已打开,请先关闭', }) } } }) } }) [代码] 导出效果如下,如需高级设置请参照xlsx插件文档 sheetjs插件文档 [图片] 代码片段 -完-
2023-08-11