最近在做OA的信息发布系统,但是需求是这样的,客户要求发布完的系统公告,要动态显示在每个登陆用户的界面中,没有登陆的下次登陆页可以看见消息,没有登陆的登陆后可以去初始化数据显示,但是在线的用户,我想用刷新界面ajax异步请求去
交互,但是5分钟实效性就差了,但是又不能频繁去刷新,不然在线几百人都去每分钟都去刷新一次,堆数据库会造成压力,不知道大家有没有更好的解决方案,今天晚上着急赶工,明天要给上头解决方案呀

解决方案 »

  1.   

    提供以下个人想法:
    1、在后台建个全局的变量(Map)
    2、当有用户发布消息的时候,根据发布对象用户更改对应用户的状态(status)
    3、页面ajax异步请求,先到session中查找对应的status是否发生变化,如果变化再去访问数据库,
    这样非必要不会去连接数据库,减少了数据库的压力还有一个想法是这样的,不知道能不能实现:
    1、当有用户发布消息的时候,查找需要发布对象用户的httpservlect ,然后直接用response.write
    在页面写入js代码改变显示。
      

  2.   

    如果系统公告没有发布范围,所有人都能看到,
    那简单点实现,把所有公告放在系统缓存中,公告发生变化及时更新缓存
    公告展现通过ajax异步取缓存中的数据如果每个人的发布范围不一样,实现复杂一些
      

  3.   

    能不能用一个变量来表示已经获取到公告,获取到了就别发ajax了,没获取到就继续发。
      

  4.   

    不知道你那使用Pushlet行不行
    我这边实时刷新的用的就是Pushlet
    简单方便
      

  5.   

    是否可以考虑用socket消息机制