首页 / 帖子
请问登录用户操作繁多的系统种类的性能优化方案

比如在线教育类的网站系统,各角色用户都会有相当多的操作。如教师布置管理课程和学生,学生学习课程:讨论提问笔记等等,还要记录学习行为轨迹并分析...。

对于此类系统,目前有何优化方案可选呢?

2个答案
老葛
发布于:2014-02-27 23:27

首先这种问题有些宽泛。

个人感觉Drupal做这种交互太多的网站不是很合适的选择,我们都知道drupal每一次的menu执行都相对较慢,响应比较慢。再者,用户交互导致很多时候缓存没法使用,比如boost等。

当然也是有办法的,首先增加缓存,能用memcache的就用memcache,很多时候需要自定义代码操作,而不要用views、panels等,因为这些代码很难优化。

其次,用ajax代替整页面的刷新,这样用户体验肯定好很多。前端js也需要优化一些,比如整体前端代码架构,压缩等。

当然,Drupal大学本身就是一个web2.0的实例,抛开服务器在国外的因素,整体应该还是比较理想的。更多drupal大学的详细参考,见这个帖子:

http://drupal001.net/question/205


王斌
发布于:2014-02-28 10:07

每一种框架都不是万能的,Drupal优点是够灵活,而大量定制基本上就意味着有大量的模块需要启用,这种情况下保证高性能,基本上只能用层层缓存的思路。


而交互频繁或者登陆用户UI差别很大的网站,就比较难做缓存方案。这个时候使用AJAX会好一些。但AJAX的后端如果用Drupal来实现的话,尤其是Full Load也会有性能问题,在一些并发设置比较少的网站,性能会急剧下降。比如,


你的Apache设置的并发请求的1000

而你的网站当前同时有100人在线,而每个被访问的页面有10个AJAX Full Load请求

那么, (10 + 1)x100 = 1100 > 1000, 就会出现网页打不开的等待现象


因此,一般来说我们需要放弃Full Load的想法,但这样的话你就需要自己写入口,因为Drupal的单一入口架构肯定是Full Load的。


另外你也可以考虑自己写PHP类库实现后端API,或者将数据同步到Solr,然后使用Solr的API,也可以使用Java实现API以获得更好的稳定性和性能,但这种发散的架构对维护是一定的挑战。


Node.js的异步高并发的特性,也是可以对这种类型的网站AJAX后端提供支持的。


另外我要说的是,当网站需要做性能优化时,有可能你的网站已经很牛X了,这时你需要考虑做架构重组或者迁移,而不是一味的在现有的框架里做优化。而如果你的网站还没什么流量,可以不必做过度的设计,根据你预期的流量目标做规划,并且想想降级策略,如果流量超出预期就先降级减压。