ASP:页面输出太多会严重影响web程序的性能

  数据量增加的很快,最近发现它的性能非常差,每次打开都需要十几秒,甚至几十秒,因为我

  的程序分页用的是我自己的分页程序:

  难道这个分页程序有问题,但是其他地方用到它没有感觉到慢呀,我没事就琢磨他,到网上查资料,结果没有具体查到说到我的那个分页程序性能差的相关资料,后来我发现我的程序中的页导航用的是数字导航方法,而且所有的页导航的数字全都输出来了,一共一千多页,能不能使这个地方慢呢?我决定测试一下,所以,我就只让他输出前200页的导航链接,结果1秒钟就刷出来了。这我才恍然大悟,原来是输出内容太多导致的。以前遇到性能问题都会去想数据库操作,从来没有想到其他地方会不会有问题,或很少想其他地方。其实页面输出的数据量对性能也是有很大影响的,所以我们一定要养成良好的程序书写习惯,力求简单。

  后来我对程序进行了优化,优化分两个步骤,第一个步骤我不将所有的导航都输出来,只输出前200多页,后面再加一个文本框用于导航。

  同时我对每个链接进行了简化,原来每个上面都有很长的链接,至此我将链接放到了javascript函数中,然后再导航数字上只加上一个onclick事件。这样又可以减少很多输出数据。结果性能非常好。

  原来的代码片断:

 <font color="#008080" size="2">当前<font color=ff0000>
<%=tCurPage%></font>页 共<font color=ff0000>
<%=tpagecount%></font>页   
  <br><%     if tTotalCount>0 then                      
   for i=1 to tPagecount                                                               
   %><a href='<%=request.servervariables("Path_Info")%>
?page=<%=i%>&browserSize=<%=browserSize%>
&t_count=<%=tTotalCount%>&order_field=<%=tOrderField%>
&order_dir=<%=tOrderDirection%>&oType=<%=oType%>
&oOP=<%=oOP%>&oKey=<%=FilterParam4(oKey)%>
&page_size=<%=tPageSize%><%=add_Option%>'><%=i%></a>
<% if browserSize=1 then      
         if i=20 or i=36 then response.write " "       
      end if    
      if i=fCou then   
         exit for     
      end if      
      response.write ""           
   next %>
  <%dim allStr             
   if tpagecount>fCou then                                       
      for i=fCou+1 to tpagecount          
     if browserSize=0 then      
       m=(i=74 or i=107 or (i>107 and ((i-107) mod 27)=0))      
     else      
       m=(i=94 or i=130 or (i>130 and ((i-130) mod 35)=0))  
     end if                
                                                                                           
       allStr=allStr & "<a href='"&request.servervariables("Path_Info")&"?
page="&i&"&browserSize="&browserSize&"&t_count=" & tTotalCount & 
"&order_field=" & tOrderField & "&order_dir=" & tOrderDirection & "&
oType=" & oType & "&oOP=" & oOP & "&oKey=" & FilterParam4
(oKey) & "&page_size=" & tPageSize & add_Option & 
"'>"       
       allStr=allStr & i     
       allStr=allStr & "</a>"          
       if not m then allStr=allStr & " "       
       if m then allStr=allStr & "<br>"           
       if browserSize=1  then                
           if i=58 or i=71 then allStr=allStr & " "                
       end if                 
      if i=106 then allStr=allStr & " "       
      next%>                                         
      <script language=javascript>            
         var allStr;                       
         allStr="<%=allStr%>";                                                  
      </script><a href="#" title="显示更多…" id=seemore 
>
<font color=ff0000>∨</font></a><span id=morePage></span> 
<%end if %>                                                              
<% end if  %>  </font>      

                                                                                                  
               
更改后的代码片断:

 < script language="javascript">
   function mP(curPage)
   {
     try{
      if(!curPage)return false;

      var patInt=/^d+$/;
      if(!patInt.test(curPage)) return false;

      if(parseInt(curPage)<=0) return false;
      self.location='<%=request.servervariables("Path_Info")%>?
page=' + curPage+ '&browserSize=<%=browserSize%>
&t_count=<%=tTotalCount%>&order_field=<%=tOrderField%>
&order_dir=<%=tOrderDirection%>&oType=<%=oType%>
&oOP=<%=oOP%>&oKey=<%=FilterParam4(oKey)%>
&page_size=<%=tPageSize%><%=add_Option%>';
      }
      catch(e) {
        window.status=e.description
        return false;
      }
   }   
< /script>                                                                                  
   <font color="#008080" size="2">当前<font color=ff0000>
<%=tCurPage%></font>页 共<font color=ff0000>
<%=tpagecount%></font>页      
<br><%  if tTotalCount>0 then
    for i=1 to tPagecount     
     %><span ><%=i%></span>
     <% if browserSize=1 then   
           if i=20 or i=36 then response.write " "      
        end if  
        if i=fCou then                 
           exit for                
        end if  
response.write ""    
    next 
    dim allStr  
                                                        
    if tpagecount>fCou then  
       showPageCount=tpagecount
       if showPageCount>260 then showPageCount=260                   
       for i=fCou+1 to showPageCount     
                    
    if browserSize=0 then                   
       m=(i=74 or i=107 or (i>107 and ((i-107) mod 27)=0))                
    else                
       m=(i=94 or i=130 or (i>130 and ((i-130) mod 35)=0))                
    end if                                                                             
       allStr=allStr & "<span >GO</span>"%><a href="#" title="显示更多…"
id=seemore ><font color=ff0000>∨</font></a>     
  <span id=morePage style="display:none"><%=allStr%></span>                                                     
 <%end if                                                                                      
end if                                                                                            
   %>  </font>  

时间: 2024-12-25 23:04:53

ASP:页面输出太多会严重影响web程序的性能的相关文章

页面输出太多会严重影响web程序的性能

web|程序|性能|页面 我有这样一个小程序:asp + sqlserver2000. 数据量增加的很快,最近发现它的性能非常差,每次打开都需要十几秒,甚至几十秒,因为我的程序分页用的是我自己的分页程序: 难道这个分页程序有问题,但是其他地方用到它没有感觉到慢呀,我没事就琢磨他,到网上查资料,结果没有具体查到说到我的那个分页程序性能差的相关资料,后来我发现我的程序中的页导航用的是数字导航方法,而且所有的页导航的数字全都输出来了,一共一千多页,能不能使这个地方慢呢?我决定测试一下,所以,我就只让他

ASP.NET 2.0中的页面输出缓存

asp.net|缓存|页面 静态页面全部内容保存在服务器内存中.当再有请求时,系统将缓存中的相关数据直接输出,直到缓存数据过期.这个过程中,缓存不需要再次经过页面处理生命周期.这样可以缩短请求响应时间,提高应用程序性能.很显然,页面输出缓存适用于不需要频繁更新数据,而占用大量时间和资源才能编译生成的页面.对于那些数据经常更新的页面,则不适用.默认情况下,ASP.NET 2.0启用了页面输出缓存功能,但并不缓存任何响应的输出.开发人员必须通过设置,使得某些页面的响应成为缓存的一部分. 设置页面输出

Asp.Net页面输出到EXCEL

asp.net|excel|页面 其实,利用ASP.NET输出指定内容的WORD.EXCEL.TXT.HTM等类型的文档很容易的.主要分为三步来完成. 一.定义文档类型.字符编码 Response.Clear(); Response.Buffer= true; Response.Charset="utf-8"; //下面这行很重要, attachment 参数表示作为附件下载,您可以改成 online在线打开 //filename=FileFlow.xls 指定输出文件的名称,注意其扩

适合ASP.NET MVC的视图片断缓存方式(下):页面输出原则

上一篇文章里已经把Html.Cache打造成了非常具有可用性的API,需要缓存时我们只需在页面上做一个 标记即可: <% Html.Cache("cache_key", DateTime.Now.AddSeconds(10), () => { % > <% foreach (var article in Model.Articles) { %> <p><%= article.Body %></p> <% } %&g

asp.net输出重写压缩页面文件实例代码

 这篇文章主要介绍了asp.net输出重写压缩页面文件实例代码,需要的朋友可以参考下 例子    代码如下: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.Web

ASP.NET 2.0中的页面输出缓存_实用技巧

静态页面全部内容保存在服务器内存中.当再有请求时,系统将缓存中的相关数据直接输出,直到缓存数据过期.这个过程中,缓存不需要再次经过页面处理生命周期.这样可以缩短请求响应时间,提高应用程序性能.很显然,页面输出缓存适用于不需要频繁更新数据,而占用大量时间和资源才能编译生成的页面.对于那些数据经常更新的页面,则不适用.默认情况下,ASP.NET 2.0启用了页面输出缓存功能,但并不缓存任何响应的输出.开发人员必须通过设置,使得某些页面的响应成为缓存的一部分. 设置页面输出缓存可以使用以下两种方式:一

javascript-js如何实现在页面指定区域定时输出指定位数整数而不影响其他页面内容

问题描述 js如何实现在页面指定区域定时输出指定位数整数而不影响其他页面内容 比如我要在某个内实现每隔十分钟输出一个随机的7位数 而实现这个功能后又不影响页面的其他功能 求代码实例 解决方案 其他内容 <div id="dvNum"></div> 其他内容 <script> function rnd(min, max) { var tmp = min; if (max < min) { min = max; max = tmp; } retur

ASP.NET缓存全解析2:页面输出缓存

ASP.NET缓存全解析文章索引 ASP.NET缓存全解析1:缓存的概述 ASP.NET缓存全解析2:页面输出缓存 ASP.NET缓存全解析3:页面局部缓存 ASP.NET缓存全解析4:应用程序数据缓存 ASP.NET 缓存全解析5:文件缓存依赖 ASP.NET 缓存全解析6:数据库缓存依赖 ASP.NET 缓存全解析7:第三方分布式缓存解决方案 Memcached和Cacheman 页面输出缓存是最为简单的缓存机制,该机制将整个ASP.NET页面内容保存在服务器内存中.当用户请求该页面时,系统

必学:将Asp.Net页面输出到EXCEL里去

 其实,利用ASP.NET输出指定内容的WORD.EXCEL.TXT.HTM等类型的文档很容易的.主要分为三步来完成. 一.定义文档类型.字符编码   Response.Clear(); Response.Buffer= true; Response.Charset="utf-8"; //下面这行很重要, attachment 参数表示作为附件下载,您可以改成 online在线打开 //filename=FileFlow.xls 指定输出文件的名称,注意其扩展名和指定文件类型相符,可以