首页 >> 读书频道 >> 电脑 >> 对<<在ASP中改善动态分页的性能>>的不足与修正建议
 
· ASP中使用Sessio
· 提高ADO性能的优秀经验
· 对提高ASP执行效率的几
· 最大限度优化你的Asp性
· 解决Server is
· 浅析数据完整性问题
· ASP 3.0中的流控制
· 用ASP创建多栏选项列表
· DUDU的无组件上传例程
· 动态输入框的三个函数
· 怎样计算折扣
· 检测浏览器是否支持有Fl
 
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
· 源氏物语[日本:紫式部]
· 红楼梦:120回全本[清
· 武林寓言故事
· 2006高考录取规则
· 首批中国世界名牌产品和2
· 济南美食大全
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

对<<在ASP中改善动态分页的性能>>的不足与修正建议


查看有无更新版本

关键字:ASP 2006-8-28

 

呵呵,可以进精华区吗?用了我一天的时间。
两位张兄的<<在ASP中改善动态分页的性能>>一文给我很大的启发,在此表示感谢,但在我想来还是有一些不足的地方。
一是无法反应一些随更新的信息。
加设现为一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
%>

对<<在ASP中改善动态分页的性能>>的不足与修正建议

[ 1 ]
对<<在ASP中改善动态分页的性能>>的不足与修正建议 num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑