最近搞了一个ajax应用,感觉不错。
背景如下:某国产T开头3个字母专作政府单位项目的数据库厂商,他们的东西实在太糟糕,无论是数据库本身还是他们提供外包项目开发人员。(报错,超时,总共70W数据的库,检索10条记录需要n秒。其自带的发布系统,每次都要编译模版,并导致jsp重新编译)用户从访问开始,到看到页面,内容,少则10秒,多则几十秒。
这东西怎么办呢?俺可不想给他动大手术,出了问题,留了后遗症,对大家都没好处。于是做基于ajax的简易解决方案如下:
1 彻底分离数据和表现,用一个servlet来获取数据,输出xml --鉴于那个破烂数据库的效率,此步耗时1-5秒。
2去掉模版,模版只是为了改变页面方便,如果页面中不包含数据的逻辑,自然也就不麻烦了。本系统中去掉模版的好处是避免了重新编译jsp(列位看官可见过这样的发布/模版系统?)。用js处理包含数据的div,用css调整页面,并把div放到合适的位置,赋予合适的样式。
3 这时候,打开页面非常迅速,apache的性能不是吹出来的。但,由于数据库慢,获取数据还需要1-5秒。好在是异步加载。这段时间怎么办?放进度条?no...太不职业了。我的选择是:在上面放带有进度条的广告。
这个方案,用户满意--比原来快多了嘛,领导满意--快多了,还能多赚点钱,我也满意--方案够简单,没什么后遗症。