设为首页
加入收藏
帮助中心
首页 | 红盾通告 | 信息中心 | ASP技术 | 数据库 | 网页设计 | 网管专栏 | OICQ攻略 | 墨客频道 | 网站运营 |
当前位置:首页 >> ASP技术 >> 性能优化 >> 正文
最新信息
·ASP 中健壮的页结构的异常…
·Url ReWriting 示例
·改进 ASP 应用程序中的字符…
·关于"&"运算符效率低下的问…
·加速ASP程序的显示速度
·对你的ASP程序作负载测试
·ASP提速技巧五则
·用数据绑定实现高效率动态…
·不用 EOF 以加快记录循环
·对《在ASP中改善动态分页的…
资料搜索
热点信息
·加速ASP程序的显示速度
·ASP特殊字符过滤
·asp内存和速度优化
·微软建议的ASP性能优化28条…
·提高ADO性能的优秀经验
·asp性能测试第二部分(十一…
·改善ASP性能和外观的技巧集…
·ASP提速技巧五则
·如何增强ASP程序性能(4)
·Asp编码优化技巧8则
推荐信息
·改进 ASP 应用程序中的字符…
·提高ASP性能的最佳选择
·微软建议的ASP性能优化28条…
·asp内存和速度优化
·ASP特殊字符过滤
·提高ADO性能的优秀经验
·ASP实用技巧28则
·加速ASP程序的显示速度
·ASP中使用Session变量的优…
·优化你的ASP程序


Google
 
对《在ASP中改善动态分页的性能》的不足与修正建议
〖编辑:Cloudy | 浏览:人次〗

一是无法反应一些随更新的信息。
    加设现为一BBS,那么随时更新的信息有
    每个贴子的点击
    新加贴子的信息,这些在两位张兄兄的方案中无法自动更新,只有用户在更改查询时才能使用。

二是内存使用太多,事实上对于一个论坛来讲,大多数人还是按顺序来访问的,没有必要每个人一个session。

三是处理数据时不方便
  只能用数组的方式来进行,不直观,可读性差。


对于以上几点,我提出如下改进方案
一 使用application, 可做到多人共同使用同一数据
二 只存入和取出ID号,其它数据做第二次select
三 自动删除过时的application 以节约内存.
四 在添加和删除数据时,重新导入数据

其它好处
呵呵,可以使用getstring()了,原来分页时不行的
可以不用1,3了,

代码如下

a_page.asp
-----------------------------------------------------------------'
<%
dim apage_pagesize    '每页记录数
dim apage_Count        '总计记录数
dim apage_PageCount    '总页数
dim apage_PageForm    '跳页用的Form
dim apage_PageUrl    '上一页下一页的链接
dim apage_timeout    '过期时间设置(秒)

apage_timeout=300    '过期时间设置(秒)
apage_pagesize=20    '

function apage_bactive (str_name)    '判断是否有这个对象,并删除过期对象
    apage_bactive=false
    dim item, s_temp
    for item=1 to Application.contents.count '找出所有的Application
        s_temp=Application.contents(item)
        if isarray (s_temp) then
            if ubound(s_temp)=3 and s_temp(0)="apage" then
                if s_temp(1)=str_name then
                    apage_bactive=true                '要求对象存在
                else
                    if DateDiff("s",s_temp(2),now())>apage_timeout then '删除过其对象
                        Application.contents.remove(item)
                    end if
                end if
            end if
        end if
    next
end function  'b_inuser

sub apage_open (str_name , str_table, str_id, str_sqlend)    '打开对象并计算一些数据
        '对象名,    表名,     关键字名, 查询条件
    dim a1, a_ob
    if not apage_bactive (str_name)    then            '如对象不存在则新建一对象
        apage_load str_name, str_table, str_id, str_sqlend
    end if
        a1=application (str_name)
        a1(2)=now()
        application.lock
            application (str_name)=a1
        application.unlock
        a_ob=a1(3)
        apage_Count=ubound(a_ob,2)+1
        apage_PageCount=int(apage_Count/apage_pagesize)+1
end sub'apage_open

function apage_get (str_name, page)                '得到本页的所有id号
    dim a1, a_ob, i_stat, i_end, i1, str_actionurl , str_query , str_1, str_2
    '以下为保证page是正确的
    page=cint (page)
    if page <1 then page=1   
    if page >apage_PageCount then page=apage_PageCount
   
    '得到id号
    apage_get=""
    a1=application (str_name)
    a_ob=a1(3)
    i_stat=(page-1)* apage_pagesize
    i_end=page* apage_pagesize-1
    if i_end>(apage_Count-1) then
        i_end=apage_Count-1
    end if

    for i1=i_stat to i_end
        apage_get=apage_get & a_ob(0,i1) & ","
    next
    '去掉多余的","号
    if len(apage_get) > 0 then
        apage_get=left (apage_get, len(apage_get)-1)
    end if

   
    '以下为得到用户换页信息
    str_actionurl = "http://" & Request.ServerVariables("HTTP_HOST") & Request.ServerVariables("SCRIPT_NAME")
    str_query=Request.ServerVariables("QUERY_STRING")
    str_1=split (str_query, "&")
    str_query=""
    for i1=0 to ubound (str_1)
        if left (str_1(i1), 5) <> "page=" then
            response.write left (str_1(i1), 5) & "<br>"
            str_query=str_query&str_1(i1) & "&"
        end if
    next
    str_2=str_actionurl & "?"&str_query
    if page>1 then
        apage_PageUrl="<a href=" &str_2 & "page=1" &">首页</a> " & _
                    "<a href="&str_2 & "page="&(page-1) &">前页</a> "
    else
        apage_PageUrl="首页 前页"
    end if
    if page<apage_PageCount then
        apage_PageUrl=apage_PageUrl& "<a href="&str_2 & "page="&(page+1) &">后页</a> " & _
                    "<a href="&str_2 & "page="&apage_PageCount&">尾页</a>"
    else
        apage_PageUrl=apage_PageUrl& "后页 尾页"
    end if
    apage_PageForm="<table><form method=get name='page' onsubmit='document.location =""" & str_2 &"page=""+this.page.value;return false;'>"&_
    "<tr><td>转到第<INPUT TYPE='text' NAME='page' value='"&page&"'>页"&_
    "<INPUT type=submit style='font-size: 9pt' value=GO></table>"
   
end function

sub apage_load (str_name, str_table, str_id, str_sqlend)    '新建或重新导入一对象

    sql="select " & str_id & " from " & str_table & str_sqlend
    set rs=conn.execute (sql)
    dim a2 (3)
    a2(0)="apage"
    a2(1)=str_name
    a2(2)=now()
    a2(3)=rs.getrows()
    application.lock
        application (str_name)=a2
    application.unlock
end sub'apage_load

sub apage_update(str_name , str_table, str_id, str_sqlend)    '更新数据时使用
    if apage_bactive (str_name)    then            '如对象存在则重新导入对象
        apage_load str_name, str_table, str_id, str_sqlend
    end if
end sub

%>


附:test.asp
----------------------------------------------------------------------
<!--#include file="conn.asp" -->
<!--#include file="a_page.asp" -->
<%
'建表   
'create table page
'(page_id INT     not null IDENTITY (1, 1),
'page_value int not null,
'class_id int not null
')
sub add_test    '加入测试用数据
    dim i1'as int
    for i1=0 to 1000
        sql="insert into page (page_value, class_id) values (" & i1 &",1)"
        conn.execute sql
    next
    for i1=0 to 1000
        sql="insert into page (page_value, class_id) values (" & i1 &",2)"
        conn.execute sql
    next
    apage_update "test", "page" , "page_id" , ""
    'apage_update "test1", "page" , "page_id" , " where class_id=1"
end sub 'add_test
'add_test    '要加入时去掉'

dim str_test
apage_open "test", "page" , "page_id" , ""
'apage_open "test1", "page" , "page_id" , " where class_id=1"
str_test =apage_get ("test" ,request("page"))
'str_test= apage_get ("test1" ,request("page"))
sql="select  * from page where page_id in(" & str_test & ")"
set rs=conn.execute (sql)
response.write response.write "<table border=1><tr><td>" & rs.getstring (2,,"<td>", "<tr><td>") & "</table>"
'或可
'while not rs.eof
'    response.write "<a href=hahafish.asp?id=" & rs("page_id") & ">" & rs("page_value") & "</a><br>"
'rs.movenext
'wend


response.write apage_PageUrl
response.write apage_pageform
%>  


录入时间:2006-05-11 19:49:03 [打印本页] [关闭窗口] [返回顶部]
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

Copyright © 2006-2014 0733168.Com Inc All Rights Reserved
关于我们 | 广告合作 | 联系我们 | 法律声明 | 友情链接 | 意见反馈
本站所收录信息、社区话题、及本站所做之广告均属其个人行为,与本站立场无关
湘ICP备06008436号