1、案例背景
现在很多用户会在一些互联网平台上进行房产交易,作为交易凭证都是需要签署一份电子版合同的(一般是word、pdf等格式),用户签名完后,需要点击上传按钮把电子版合同上传到系统中去,平台这边一般会把电子合同存储到专用的文件服务器上去,如图1所示:
2、案例分析
初步来看的话,这似乎就只是一个普通的文件上传功能,类似很多APP中的用户上传头像之类的功能一样,没什么特别的。一般来说只要电子合同文件不大的话,也不会存在什么性能问题。
但是真实情况并不是这么简单的,我们进行深入分析一下
对于用户来说,只是简单的上传一下电子合同,但是平台后续需要根据一些条件查找这些合同,可能根据合同文件名来查找,也可能需要根据合同里面的某些关键内容来进行全文检索,所以在保存电子合同文件的同时,系统还需要对这些电子合同附件的内容进行分析,然后创建相应的索引文件,以供平台后续对这些电子合同附件进行全文检索时使用。如图2所示:
对读取电子合同附件的内容生成索引文件的过程包括文件I/O和一些计算(如进行分词),该过程是需要耗费不少时间的,导致的效果就是用户点击上传合同按钮之后,界面就卡死了,一直等待响应,可能数分钟后才会得到操作的反馈,甚至有时候直接反馈请求超时,如图3所示
3、总结
对于平台最初的版本来说,为了赶进度,我们简单实现了这个合同上传的功能即可,不需要考虑太多性能问题。而且一开始用户量并不是很大,问题不会很大。但随着公司不断投入广告,对平台进行大力推广,用户量不断增多,这个时候,性能问题也会日渐严峻了。
对于互联网产品,用户体验非常重要,因此对这个平台进行性能优化迫在眉睫。
那具体要怎么来优化才好呢?