前一段时间用C#.net做了一个网站:www.pykjxxw.com.cn/index_keji/  (整站的一个部分)
 现在感觉该网站浏览起来非常的慢,甚至占用大量CPU资源!(对方服务器是电信的空间,在濮阳),现在我感觉应该与程序有比较大的相关性,首页信息列表模块比较多,信息列表我是以  Repeater控件控制其循环显示的,当然也有用 DataList控件!请大家打开网站看看,帮帮小弟
 

解决方案 »

  1.   

    就是我在VS05中,用gridview显示数据,自动实现分页,我点删除,就出现下面的问题.
     除非指定了 UpdateCommand,否则数据源“AccessDataSource1”不支持更新操作。
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息: System.NotSupportedException: 除非指定了 UpdateCommand,否则数据源“AccessDataSource1”不支持更新操作。源错误:执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。堆栈跟踪:[NotSupportedException: 除非指定了 UpdateCommand,否则数据源“AccessDataSource1”不支持更新操作。]
       System.Web.UI.WebControls.SqlDataSourceView.ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues) +740
       System.Web.UI.DataSourceView.Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback) +78
       System.Web.UI.WebControls.GridView.HandleUpdate(GridViewRow row, Int32 rowIndex, Boolean causesValidation) +1218
       System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +853
       System.Web.UI.WebControls.GridView.OnBubbleEvent(Object source, EventArgs e) +87
       System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
      

  2.   

    那你指定了 UpdateCommand ,是不是问题就解决了?
      

  3.   

    看过网站了,确实很慢,用IE看了一下源代码(Html),但实在不知道是哪些地方出了问题。
    只能给出点建议,希望对你有所帮助
    一、取列表的数据,不要全部取出来,尽量只取所要用的数据,比如,界面列表数据,只要5条,就取5条。
    二、如果多表连合显示的数据,比如,从A表取部分数据,而又要从B表取出相关信息,则最好建立视图,一次性取出,不要在程序里再次循环逐条取数
    三、数据表建立索引
    四、数据库缓存开大
    五、IIS缓存开大最后,优化你的代码与结构
    一、在做这种类型的网站,以速度为主,不要多分层,尽量以简单实用为主,如果可能最好就两层,一个前台(展示),一个后台(数据库连接与业务逻辑),
    二、检查循环与递归,判断是否可以去掉或者更优化的写法,这种情况以速度为主,而清晰则放在第二位(可以写代码注释来补全)
      

  4.   

     我的QQ:77227265,能加一下你吗?dreamdragon2007,朋友,我发给你首页的代码你看一下
      

  5.   

    上班中,不能上QQ,呵呵!对不起哦!
    晚上看情况会上线的。
    对于上面的情况,你可以先查查,千万不要用循环的方式绑定,或使用事件DataBinding与ItemDataBound,如果真有这种需要,最好用数据库的能力(做存储过程,把数据一次性返回然后绑定到界面中去
      

  6.   

     aspx页面中“科技动态模块”代码为:
    <asp:Repeater id="repeater_kjdt" runat="server">
    <ItemTemplate>
    <tr>
                   <td width="20" height="20">
    <div align="center"><img src="images/cunct_ldian.gif" width="4" height="4" /></div>
    </td>
                    <td width="169" height="20">
    <a href='<%#"Info.aspx?id=" + DataBinder.Eval(Container.DataItem, "newID")%>' class="bb" title="<%#DataBinder.Eval(Container.DataItem, "Title")%>" target="_blank"><%#GetFirstString(DataBinder.Eval(Container.DataItem, "Title").ToString(),22)%></a>
    </td>
            </tr>
            </ItemTemplate>
    </asp:Repeater>
    后台绑定数据源的方式为:
    Page_OnLoad事件中加载:
     info_kjdt();事件;public void info_kjdt()         //科技动态栏目
        {
            repeater_kjdt.DataSource = Info("36", "6"); 
            repeater_kjdt.DataBind();
        }
    public DataTable Info(string typeid, string num)
        {
            DataTable dt = new DataTable();
            SqlParameter[] Parameters = new SqlParameter[2];
            Parameters[0] = new SqlParameter("@num", num);
            Parameters[1] = new SqlParameter("@typeid", typeid);
            dt = SqlHelper.ExecuteDataset(Db.MyStaticConn(), "PY_Optimize", Parameters).Tables[0];
            return dt;
        }
     …………首页相当多的信息模块都是用主种方式来绑定的,是不是因为多次的存取数据库造成网站整体反应很慢的原因呢??我感觉你说的 “最好用数据库的能力(做存储过程,把数据一次性返回然后绑定到界面中去”挺不错的,只是如何一次把所有的需要的数据取出来再让它们各自绑定到对应的信息模块呢?
      

  7.   

    返回DATASET不要一个一个DATATABLE返回
      

  8.   

    仅显示绑定尽量用reader ,不要用dataset
      

  9.   

    在Global.asax中写一个小服务定时来个动转静..
      

  10.   

    ziiq 兄,能不能提出来你的观点让小弟一阅呢?
      

  11.   

    谢谢大家,最重要的一个原因找到了,在一存储过程中调用数据时用了 select * from tablename 该表中有近30000条数据,所以赞成了页面整体反应迟缓!我给改成select top 30 * from ……就快多了。程序方面我会进一步优化的,谢谢
      

  12.   

    Web软件优化是从页面、片段缓存优化开始的,一直往后、往下逐渐深入。当你死抠在底层一些东西从底向上优化,除非你原来的设计就很烂,否则优化的效果远远不及从上下向下层次的优化。可惜,这些很难看到完整的文章,因为这些属于应用技术,许多人在开始学东西时觉得离自己很远,于是畅销书也都不去(相互)抄袭这方面的好文章。你可以多看一些从界面开始的优化、架构设计资料,不要过分纠缠于代码深处的那些东西。