热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

微信的离线交互逻辑

1.微信的一个原则微信做产品的一个原则:核心功能做到极致,辅助功能尽量做到降低成本。2.搜索功能聊天页面的“搜索”功能的使用场景频次由高到低是ÿ
1. 微信的一个原则

微信做产品的一个原则:核心功能做到极致,辅助功能尽量做到降低成本。




2. 搜索功能

聊天页面的“搜索”功能的使用场景频次由高到低是:微信好友、群聊好友、公众号&小程序、聊天记录、收藏。而由于用户在搜索信息呈现的页面下滑到“聊天记录”这个功能且通过“搜索”来查找聊天记录的场景比较少,频次比较低,所以在“聊天记录”这个功能之前,微信机智地插入了自己的广告:功能、游戏。




3. 聊天功能

而“语音输入”功能,则是因为用户对着微信说话,微信将语音转化成文字,属于用户与用户强关系社交下的即时通讯辅助。这时候对于用户来讲,他希望可以即时被告知“语音输入”功能是否能用,如果在用户不明确网络是否可行的前提下,用户点击了“语音输入”,等用户语音录入完毕、希望传达信息的时候,微信loading(加载)页反馈需要等待,或者提示网络不可用,这种体验对于用户来说是很伤的。

所以,微信将这三个功能(视频聊天、实时共享位置、语音输入)设置成在用户使用前就即时判断是否有网。




此外需要注意的是,发红包和转账因为涉及到余额或者从银行卡支取钱,所以必须请求服务器才能完成。因此操作进行到支付环节的时候,因为需要请求服务器,导致这时候在离线情况下,流程将不能如常进行下去。

那么这里面有一个问题:既然知道支付环节要联网才能走完整个流程,为什么不在整个流程之初(点击“红包”、“转账”)的时候就直接出现“当前网络不可用”之类的弹屏提示呢?

对此,我是这么认为的:

  • 第一,如果用户使用场景是一直处于离线状态,那么这个时候,用户通常不会使用微信等APP;
  • 第二,弱网环境或者网络不稳定的环境,要比离线环境的使用场景多,如果在流程之初(点击“红包”、“转账”),就需要请求服务器,告知“网络不可用”,那么用户很容易直接放弃该操作;
  • 第三,这么做可以减少前端对服务器的请求次数,对于月活近十亿级用户的微信来说,减少对服务器的一次请求,在服务器端的支出都有可能降低很多。我想这第三点也应该是里面最重要的一点。






4. 好友

对于微信的好友处理的相关操作,我发现微信的原则是:尽最大可能地减少对服务器的请求。

结合前面的情况以及流程的分析,我认为在微信的服务器端,微信并没有对用户的聊天内容进行储存,只是将其作为一个信息传递的通道。对此,我们可以这样理解,我们发送的消息就像货物一样,被服务器由A站拉到B站然后卸载下来后,服务器就不管了,如果B站收了就收了,如果B站不收,也并不会把货物(聊天内容)让服务器带回去储存在服务器或者返回给A站




5. 设置

涉及到账号安全的功能模块,在离线状态下都是没有办法使用的,这是因为账号安全的相关处理,放在后端要比前端安全的多,所以不只是微信,其他平台也是这样,即选择通过后台来处理和账号安全相关的问题,是比较普遍的做法。




一味追求逻辑正确是标准的技术思维,而一味追求用户体验,不考虑逻辑和技术又属于空谈。




6. 朋友圈

微信一共有三种loading(加载)机制:

  • loading过程中不能进行任何操作的,只能等提示网络超时;
  • loading过程中可以点击返回或者取消等操作,来停止loading;
  • loading和其他操作互不影响的。

而在朋友圈页面中loading的加载机制即为第三种:






对此我的分析是,朋友圈在使用频率上可以说仅次于即时通讯,一个小小的优化影响到十亿用户的高频使用,这时候弱网环境、断网环境的容错性就变得尤为重要。对于这样一个使用频率较高的功能,当用户在行驶的地铁上或者火车上等信号非常不稳定的场景下,还可以进行正常发朋友圈、点赞、评论、回复的操作体验,这样的设计就显得格外重要了。

而且,朋友圈相对即时通讯,其实是属于弱关系社交,天然的场景下是不需要对方马上做出回复、点赞、评论等互动。所以,这种逻辑可以说是保证在离线状态下可以使用该功能,且互动信息在有网环境下推送给对方这样符合用户使用场景的最优解决方案了。虽然这一点技术上实现起来应该是相当困难的,但是一旦实现价值也是显而易见的,通过微信朋友圈这个成功的产品就能明显看出来。




7. 总结




通过对离线版微信一些常见的功能以及对应操作的分析,我发现微信对于前后端交互处理的原则有以下几点:

  • 对于非核心功能,为了尽可能减少对服务器的压力,微信做了大量的前端缓存、前端交互逻辑;
  • 在不得不请求服务器时,微信会考虑该结果是用户即时想要的还是可以延后的,如果是即时想要的,就即时请求服务器(如支付),如果不是那么急迫,则有可能延后请求,以保证网络环境较差的时候,流程可以走通(如拉黑、删除);
  • 对于核心功能(如朋友圈),做到最大限度的容错性以保障用户体验。

另外,在这整个过程中,作为一枚产品狗,我得到了如下的一些启发,且这些信息可以应用到我的工作中,希望也可以对你有帮助:

  • 对于成本控制的意识,应该纳入产品方案中去,也许我们做不到像微信那么极致,但是有意识的往这方面考虑,也许会有更好的产品方案;
  • 对于核心功能花多大精力去优化,都不为过,因为这才是我们安身立命的根本;
  • 不要一味追求逻辑正确,可能有些时候逻辑合适才是更重要的。




出处:https://zhuanlan.zhihu.com/p/29129653




推荐阅读
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • 新冠肺炎疫情期间,各大银行积极利用手机银行平台,满足客户在金融与生活多方面的需求。线上服务不仅激活了防疫相关的民生场景,还推动了银行通过互联网思维进行获客、引流与经营。本文探讨了银行在找房、买菜、打卡、教育等领域的创新举措。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 解决MongoDB Compass远程连接问题
    本文记录了在使用阿里云服务器部署MongoDB后,通过MongoDB Compass进行远程连接时遇到的问题及解决方案。详细介绍了从防火墙配置到安全组设置的各个步骤,帮助读者顺利解决问题。 ... [详细]
  • 本文介绍了如何使用PHP代码实现微信平台的媒体素材上传功能,详细解释了API接口的使用方法和注意事项,确保文件路径正确以避免常见的错误。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 百度服务再次遭遇技术问题,疑似DNS解析故障
    近日晚间,百度多项在线服务出现加载异常,包括移动端搜索在内的多个功能受到影响。初步迹象表明,问题可能与DNS服务器解析有关。 ... [详细]
author-avatar
520文雅_293
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有