小弟最近的工作是给门户网站中的某些模块写后台!其中有订票系统,会员天地,供求信息等N个模块,但是由于小弟是一个比较垃圾的程序员,因此想问问如何能让用户访问后台数据库的时候,通过代码使访问数据库的时候,达到最快(或者是相对较快的)的速度!第一,小弟的连接字符串写在了WebConfig里了;
第二,数据库服务器不在新网上,而是一个本身就是比较垃圾的服务器(本身就慢)!(没有办法,老板抠)
第三,小弟每次要读取数据的时候,都是直接读取数据库,没有在缓存里读取(说实话,是我不太会;当时也没有想到,现在想到了,代码改动太大,索性就算了)
第四,页面上自然有好多图片,不过都是美工干的(有的很大),我也无能为力!现在小弟已经不能再去改动太多的代码了,不过小弟想知道,再上诉已经成为不变的事实的情况下,能否提高对Web页面对数据库的访问速度呢?我改怎么做?还有,以后小弟再做别的项目的时候,遇到访问数据库的问题,应该如何处理才能做到对数据库的访问进行优化?比如用缓存(我不知道该怎么用,大概是Catch这个方法吧,请各位教一下我!)另外,如果是2005版本,还需要注意哪些问题?(2005我还没有用过,不过也希望知道)
希望各位高手,各位朋友,能给我这方面的提示(希望能详细的告诉我),我非常感谢你们!!!如果分数不够我可以再加!最后,祝愿CSDN上的所有朋友,每天都开心!

解决方案 »

  1.   

    数据库跟 网站 分开服务器放的吗?数据量有多少呢?对于大数据量的表是否有采用存储过程分页呢?如果对于大数据量的表在ado.net中分页+数据库跟 网站 分开服务器放 不死才怪~
      

  2.   

    第一:写到WEB.CONFIG里也可以,但要加密
    第三:DATAREADER是最快的读取方式,DATATABLE是最烂的
    第四:尽量把前台页面生成静态的,还有把VIEWSTATE禁用掉以减轻项面重量,不能生成静态的,对于首页提交的事件做成AJAX
      

  3.   

    如果你的网站有很多各用户可以公用的信息,可以把这些信息独到DataSet里,并把此DataSet保存到Application对象里。因为Application对象是所有用户公用的,所以只有第一个用户会访问比较慢,其它用户直接从此Application中的DataSet中读取数据,就会很快了。一般作缓存都是这个思路,更为详细的你可以看《企业应用架构模式》这本书,很经典的。
      

  4.   

    用2005吧,缓存会很方便的.在MSCD里有专门介绍
      

  5.   

    数据库跟 网站 分开服务器放的吗?数据量有多少呢?对于大数据量的表是否有采用存储过程分页呢?如果对于大数据量的表在ado.net中分页+数据库跟 网站 分开服务器放 不死才怪~
    ================================
    我们作的就是分开放的,也没觉着怎么慢,数据量那还是相当的大
    linux数据库服务器,在windows中ODBC连接到linux中的sybase上
      

  6.   

    1 缓存是用服务器内存空间换取时间速度,除非是访问频率相当高的数据,最好不用.且一般asp.net会自动将数据缓存一段时间,当服务器内存不够时会自动将一些使用很少的对象释放,因此不用过多考虑这个.
    2 文本,图片等大对象是最拖数据库的性能的东西,如果可能,尽量不要将文件,图片放到数据库,数据库中只保存一个文件路径或ID.
    3.图片,flash太大太多也是页面访问速度的死敌,要求美工将图片,flash的文件大小改小,同样的效果,不同的文件保存方式会使得文件大小截然不同
      

  7.   

    现在的问题是,数据库确实是用的索引,而且设计已经成型了,我根本就改不了!
    另外,我的设计思路是,数据库中仅仅有的是图片的图片名称,连路径也不会有,因为提取的时候,我们的路径是固定的,我只要加上就可以了!不过DataReader好象是个很好用的东西,不过我一直也没有用过,今天上午研究了一下,也只是个非常初级的认识,我希望各位能告诉我一些有关DataReader的相关使用的站点,我想细看看!
    我现在做的多层架构中,数据访问层一般都返回的是DataSet ,是不是我以后再做数据访问层的时候,有数据返回的时候直接返回DataReader比较好呢?希望各位能继续给我一些你们生活中的经验!
      

  8.   

    啊,生活中的经验?工作上的经验吧,哈哈DataReader是轻量级的数据读取器,它只会储存一行数据,因此比较节省资源。
    相对应SQL Server来讲,它会占用一个连接,直到调用DataReader.Close()方法为止。因此,如果是使用时间比较短的,可以使用DataReader,如果使用时间很长的,不应该使用DataReader
      

  9.   

    主要的要点是,尽快的调用Close()方法,以释放资源。
    2000条不算多,可以使用DataReader.另:DataReader只能查后一条记录,且只能使用DataReader.Read()方法向后读取,不能后退。应根据实际情况使用DataTable或DataReader;
      

  10.   

    使用缓存,节省资金:http://www.microsoft.com/china/msdn/library/webservices/asp.net/aspnetasp11022004.mspx?pf=true
      

  11.   

    如果你用ASP.NET 1.x做好了,就不要换到2.0去,那个迁移工作量是非常大的。你不想改动太多的话,就只有靠Cache,而且一个优秀的Cache策略比一个劣质的Cache策略会好很多。你可以通过添加一些追踪代码等,来追踪用户浏览你的页面时的详细情况,从而制定一个好的Cache策略。