日期:2014-05-17  浏览次数:20449 次

页面中有多个Repeater控件,后台分别Repeater.DataSource=XXX,怎样提高访问速度?
前台的 aspx 中有多个 Repeater 控件,
后台 的CS 文件中分别绑定。
如下,前台的 aspx 代码:
C# code
           <ul>
                <asp:Repeater ID="Repeater2" runat="server">
                <ItemTemplate>
                <li>
                  <span class="s1"><a href='DetailInf.aspx?NewsId=<%# Eval("NewsId") %>'>  <%#GetSrCount(Eval("Title").ToString())%> </a></span> 
                   <span class="s2"> <%# Eval("EditDate","{0:yyyy-MM-dd}")%> </span>
                </li>
                </ItemTemplate>
                </asp:Repeater>
           </ul>

后台的代码:
C# code

        Repeater11.DataSource = CMSNews.showShouYe(55); //调用类中的方法
        Repeater11.DataBind();

类中的方法:
       public DataTable showShouYe(int str_classid)
        {
            DataSet ds = new DataSet();
            string str_showsql = "select top 6 * from CMS_News where DeleteFlag = '0' and ClassId= " + str_classid + " order by EditDate desc";
            Database db = DatabaseFactory.CreateDatabase("diaonianyuConnectionString");
            DbCommand cmd = db.GetSqlStringCommand(str_showsql);
            try
            {
                ds = db.ExecuteDataSet(cmd);
            }
            catch (Exception ex)
            {
                WebHelper.Alert("CMS_News.cs Error!");
            }
       
            return ds.Tables[0];  // 返回 arraylist
        }


这样写的代码,是不是 每一个 Repeater 都要从客记端到服务器,从客户端到服务器,
这样写是不是 影响访问速度,不知道怎样能提高访问速度。
非常感谢!

------解决方案--------------------
只要和数据库交互,肯定会存在数据交互时间的问题,如果非要这种方式,那么就要看你的查询语句是否足够优化,另外,Repeater 如果在客户端解析成了TABLE,整个界面也不是那么流畅,要等所有的数据加载完毕才会展现

真的要快,那就生成静态页面把
------解决方案--------------------
从你的代码来看,基本上是可以的。主要是数据库字段加索引、优化SQL语句。数据变化不频繁的话,可以适当用下缓存。