现在的位置: 首页 > 综合 > 正文

有关优化:当按钮被疯狂点击时想到的

2013年04月13日 ⁄ 综合 ⁄ 共 894字 ⁄ 字号 评论关闭
昨天,帮上高一的孩子在网上报选修课,这一通折腾让我真正了解到性能优化和用户体验的重要性了。系统不复杂,功能也比较单一,就是登录后,在课程列表中选择一到两个,然后提交就行了。用户数也不多,就算有一千个学生吧。但是,我亲眼目睹这个系统折磨了好多学生和家长,有人从开放系统就开始搞,几个小时都搞不定,不是没有响应,就是出错。作为业内人士,难免对此感兴趣,当时就在脑子里分析了出产生这个问题的原因以及改进的方法,当然,这对于自己以后的工作也有借鉴意义。

系统是B/S架构的,啥平台没注意,数据库从错误提示看出是SQLServer。系统主要问题就是性能急剧下降,产生的最直接原因是按钮被疯狂点击。这其中有个恶性循环在里面:由于性能跟不上造成响应慢,用户等待时间变长,用户失去耐心,开始第二次点击,第三次……直到不停地点击,系统趋于崩溃,用户已经崩溃。我看到的是家长不停地与小孩通电话,现在基本都是一个小孩,自己孩子交给的任务完成不了,搁谁不急?从上面的描述可以知道,这个系统最明显的问题就出在按钮的处理上。当用户提交请求后,应该在前端做些处理,让按钮失效,这并不需要多高的技术,现在一般网站的评论系统都是这么处理的。这样可以在很大程度上避免用户的重复提交,直至变成恶性循环。

提交按钮的处理是最简单最直接的优化方法,当然,后台也可以做些优化以提升系统的性能。从其返回的错误提示可以看出是数据库错误,说明大量的SQL处理已经让数据库顶不住了。解决的方法就是不能过度依赖数据库的功能,有些运算可以放到应用服务器,有些数据可以缓存到内存中。就它这个系统来看,无非就是用户数据和课程数据,前者用于校验身份,后者用来显示给用户进行选择。这两块数据都可以做缓存处理,把计算移到应用服务器的内存中进行,而不必一次次对数据表进行遍历,这对于性能的提升效果是非常明显的。

想到的也就这些吧,其实只要针对这两方面进行改进,无论是家长还是服务器都不会如此抓狂了。当时真想把程序员叫出来,现场办公!不过,我还是发挥了专业人员的优势,知道点再多也没用,反而让系统更加慢,不如静下心来,耐心等待,终于提交成功!我还依计指导了其他孩子生气

抱歉!评论已关闭.