我近来做了一个订票系统(ASP.NET  C#  SQLSERVER),一个关键页面(Order.aspx)就是以网格的形式显示30部电影,你可以点某部电影对应的【订票】按钮,那这部电影对应的“已售出票量”就自动加1。
    结果上线测试,如果200人同时订票,服务器就慢得不行,基本瘫痪。但服务器是不可能换的,我只能优化程序,有经验的朋友帮我看看以下几种方案哪个在技术上可行。
1、方案一:在Order.aspx中显示30部电影的网格位置放一个特殊符号,每次开始启动订票前,管理员点一个按钮,从数据库中把这30部电影的信息写到特殊符号位置。这就相当于“动态转静态”,只不过不是生成HTML页面,而是修改了ASPX页面。包括每个电影对应的【订票】按钮也是直接写到Order.aspx,按钮事件使用AJAX技术。
2、方案二:使用缓存技术,把这30部电影的信息放在服务器缓存中,Order.aspx读取缓存形成网格。有个问题,我想每隔2秒就更新一下缓存,因为我想更新订票信息,那从哪里出发这个更新事件呢。
抱歉本人这段时间长期加班已经思绪混乱了,说的也不太明白,真对这种情况您有什么好的办法请指教。万分感谢。
注:30部电影在订票过程中,除了已售出票量,其它信息是不变的,也就是说不用时时刷新电影信息。我的程序慢的一个原因,就是每次刷新页面都从数据库中提取一遍电影信息,那能不慢嘛。

解决方案 »

  1.   

    用AJAX试一下,一个人点了订票的时候,只写一次数据库,然后在客户端上操作
      

  2.   

    1.网页代码里显示静态的电影信息(不包括余票)和一段ajax的代码,这样就可以内存缓存或用html页缓存。
    2.这段ajax从后台把30部电影的余票数读取出来,并显示到每个电影名字的边上。并且每N秒执行一次ajax
     在服务端,把你的执行结果也用内存缓存N秒(在N秒内,所有用户都得到同一个结果)
    3.用户点订票时,用ajax提交到后台更新数据库
    ~~包你速度会满意了~~~
      

  3.   

    用ajax你有数据在不停的变动,用缓存有何意义
      

  4.   

    你的电影名称每天变化的次数不会很多吧?建议生成静态页面,用普通的表单提交方式,提交到一般处理程序xxx.ashx。另外静态页面中的动态数据可以集中一下,用一个iframe嵌套动态页面,此动态页面中的控件和动态数据要尽可能少,从而提高性能。
      

  5.   

    应该是程序有问题,200个人同时操作,一般SQL SERVER问题都不大。
    建议贴代码。