數據量增加的很快,最近發現它的性能非常差,每次打開都需要十幾秒,甚至幾十秒,因為我
的程序分頁用的是我自己的分頁程序:
難道這個分頁程序有問題,但是其他地方用到它沒有感覺到慢呀,我沒事就琢磨他,到網上查資料,結果沒有具體查到說到我的那個分頁程序性能差的相關資料,後來我發現我的程序中的頁導航用的是數字導航方法,而且所有的頁導航的數字全都輸出來了,一共一千多頁,能不能使這個地方慢呢?我決定測試一下,所以,我就只讓他輸出前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>