设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 212|回复: 11
打印 上一主题 下一主题

[经验]渚薰的ASP畅谈(七)聊天室技术☆☆☆

[复制链接]
跳转到指定楼层
1#
发表于 2009-12-27 06:58:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
聊天室,在我记忆中是7、8年前很火的一种网上社交方式了。现在,QQ基本已经取代了这种社交方式。虽然我并不怎么清楚,QQ的技术是如何压过聊天室技术的。但,有一点,我的猜测大概是对的,那就是,web应用程序很难在网络通信上打败客户端应用程序。为什么? 首先,HTTP请求是无状态的。它并不知道此刻和下一秒请求的两个网页是否是同一个人,它只会不停的生成网页的一个副本发送给请求者。既然不知道请求者是谁,那么当然不可能做到一个请求者能够响应另一个请求者的请求。通俗点说,就是,在网上的两个人,通过同一个网站,他们完全不能通过点对点的来进行通信。如此就延伸出一个问题。对于聊天室,那怎样才能看到别人发出的信息呢?答案是不停的自动刷新页面! 众人的聊天记录一般是保存在数据库里的(很不推荐放在Application里,因为Application是驻留在服务器内存上,保存在Application里,将造成服务器资源的大量被占用),因此,显示内容其实就是请求一次数据库。但是,请求数据库的开销是相当大的,而且受网络的影响突出。而且,假如,众人在很长一段时间内并没有更新消息,但各个用户的浏览器还是在不停的刷新页面,请求数据库,这种资源浪费绝对是可耻的。那,该怎样做到只有当消息被更新时才请求数据库呢? 前面提到过,HTTP请求是无状态的,任何当前用户都不可能被动响应对方的请求,要通过主动刷新页面来间接获得对方的请求。在仅有此法的前提下,该怎么来最大限度的降低开销呢?答案是用系统级会话来充当这个重任。由于Application对象是对当前所有用户可见的,如此就相当于一个全局变量,任何用户都可以引用它,修改它。如此,需要解决如上问题的原理就很简单了。 当某个用户更新聊天内容(数据库)时,Application对象就更新(可以赋值成当前时间,也可以赋值成一个新的状态值)。其他用户不停的刷新页面来检查Applicatino值是否被更新(原有的Application值可以保存在Session对象里)。当确认被更新后,此时再请求数据库。由于Application是保存在服务器内存上的,所以起访问速度相当快。这样就避免了频繁请求数据库带来的资源浪费和网络延时。
2#
发表于 2009-12-27 06:58:07 | 只看该作者
没有实际东东,还是理论
回复 支持 反对

使用道具 举报

3#
发表于 2009-12-27 06:58:12 | 只看该作者
新思维!
回复 支持 反对

使用道具 举报

4#
发表于 2009-12-27 06:58:18 | 只看该作者
以下是引用yzwt2004在2006-11-28 10:37:28的发言:
用 Applicatino 还不一样要打开数据库?

当你的Applicatino更新了,你就得打开,没更新还得打开,我是用xmlhttp的,感觉还是在不停的打开数据库;当Applicatino没有更新时,打开原来的,有更新了,就打开原来加更新的,

有没有什么办法让原来的数据,放到什么东东里装着,Applicatino没有更新就调用那个东东里的原来信息,

楼上,你是怎么实现的,说说....呵呵
数据库是必须的,或者可以用xml
即使用ajax技术,仍旧需要数据源,而大数据量的数据一般来说只能用数据库
用我顶楼所说的方法,是极大限度的减少直接访问数据库的次数(当聊天的人很多的时候,确实基本上没什么差别),而不是说避免去访问数据库。
回复 支持 反对

使用道具 举报

5#
发表于 2009-12-27 06:58:24 | 只看该作者
用 Applicatino 还不一样要打开数据库?

当你的Applicatino更新了,你就得打开,没更新还得打开,我是用xmlhttp的,感觉还是在不停的打开数据库;当Applicatino没有更新时,打开原来的,有更新了,就打开原来加更新的,

有没有什么办法让原来的数据,放到什么东东里装着,Applicatino没有更新就调用那个东东里的原来信息,

楼上,你是怎么实现的,说说....呵呵
回复 支持 反对

使用道具 举报

6#
发表于 2009-12-27 06:58:30 | 只看该作者
收集中。。。呵呵。
回复 支持 反对

使用道具 举报

7#
发表于 2009-12-27 06:58:36 | 只看该作者
说的都是些思想,不过我还是有点不懂.有点迷糊.
回复 支持 反对

使用道具 举报

8#
发表于 2009-12-27 06:58:42 | 只看该作者
顶下
回复 支持 反对

使用道具 举报

9#
发表于 2009-12-27 06:58:48 | 只看该作者
以下是引用yzwt2004在2006-8-11 15:33:14的发言:
没有实际东东,还是理论
朋友,你想我把全站代码都帖出来吗?
回复 支持 反对

使用道具 举报

10#
发表于 2009-12-27 06:58:54 | 只看该作者
楼主对Web很了解啊  
我也有了一定的理解了 谢谢楼主拉
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 19:45 , Processed in 0.105303 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表