麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

ASP提高數據顯示效率-緩存探幽

2019-11-18 16:49:17
字體:
來源:轉載
供稿:網友

  寫在前面的話:此篇還是asp相關的,相信玩ASP的都有這個感覺,當數據有5萬多條時-------just like音樂網,要調用最新的10條在頁面顯示,糟糕的是,當n多用戶打開頁面訪問的時候,每個用戶每次都要讀取數據庫一次,這無疑降低了效率,很明顯, 如果能把數據能保存在內存上,然后讀取,無疑加快了速度. 所謂緩存其實就是在內存中開辟一個用來保存數據的空間,使用緩存你就不用頻繁的訪問你保存在硬盤上的數據了,因為這些數據我們希望每個用戶都能看到效果一 樣,考慮使用的是application對象,因為它是所有訪問者的共用的對象,存儲的信息和定義的事件能夠為所有者訪問者使用,這里要使用asp內置對 象APPLICATION了,關于application,有2個方法[lock和unlock],2個集合[content和 staticobjects],2個事件[開始的application_onstart和application_end],application變 量不會因為用戶的離開而消失,一旦建立,一直等到網站關閉和程序卸載為止,正因為如此,使用的時候要特別小心!,否則會占用內存,我在這里不用多說,有興 趣的查閱相關資料吧,大體是這樣.我們是把數據寫入一個自定義的application里面,在制定的時間讀取刷新的,大體思路就是這樣.

  實例演示.先建立一個簡單的數據庫,寫個function讀取一下,寫入一個dim變量temp中:

以下是引用片段:
  Function DisplayRecords()
  '這個函數原來給一個變量temp付上記錄的值
  Dim sql, conn, rs
  '符合條件的sql語句
  sql = "SELECT id, [szd_f], [szd_t] FROM admin"
  '打開數據庫連接
  Set conn = Server.CreateObject("ADODB.Connection")
  conn.Open "DRIVER={Microsoft access Driver (*.mdb)}; DBQ="&Server.MapPath("db.mdb")
  Set rs = Server.CreateObject("ADODB.Recordset")
  rs.Open sql, conn, 1, 3
  '當符合sq語句l的數據沒有顯示完畢時
  If Not rs.EOF Then
  '給temp變量賦值
  Dim temp
  temp = "<table width=""90%"" align=""center"""
  temp = temp & " border=""1"" bordercolor=""silver"""
  temp = temp & " cellspacing=""2"" cellpadding=""0"">"
  temp = temp & "<tr bgcolor=""#CCDDEE""><td width=""5%"""
  temp = temp & ">ID</td><td>操作</td>"
  temp = temp & "<td>數值</td></tr>"
  While Not rs.EOF
  temp = temp & "<tr><td bgcolor=""#CCDDEE"">"
  temp = temp & rs("ID") & "</td><td>" & rs("szd_f")
  temp = temp & "</td><td>" & rs("szd_t")
  temp = temp & "</td></tr>"
  rs.MoveNext
  Wend
  temp = temp & "</table>"
  'temp賦值完畢,把它再返回給函數
  DisplayRecords = temp
  Else
  DisplayRecords = "Data Not Available."
  End If
  '釋放內存
  rs.Close
  conn.Close
  Set rs = Nothing
  Set conn = Nothing
  End Function
  ok,上面的函數改造完畢,調用的時候就是DisplayRecords.
  下面是application大顯身手了:
  '該函數是寫入緩存
  Function DisplayCachedRecords(Secs)
  Dim retVal, datVal, temp1
  'Secs是每次要刷新數據的時間, retVal是數據,datVal是剩余時間
  retVal = Application("cache_demo") '取得appliction的值
  datVal = Application("cache_demo_date") '取得appliction的值
  '判斷datVal 的值,也就是要計算時間過去了沒
  If datVal = "" Then
  '如果是空,datVal值為當前時間按秒加上secs定義的時間
  datVal = DateAdd("s",Secs,Now)
  End If
  'temp1是判斷當前時間和datVal的秒差
  temp1 = DateDiff("s", Now, datVal)
  '如果retVal已經是上面函數的返回值且時間大于0
  If temp1 > 0 And retVal <> "" Then
  '本函數返回記錄數
  DisplayCachedRecords = retVal
  Response.Write "<b><font color=""green"">利用緩存讀取數據"
  Response.Write " ... (" & temp1 & " 秒剩余)</font></b>"
  Response.Write "<br><br>"
  Else
  'retVal 是空的話,就賦予DisplayRecords的值給變量temp2
  Dim temp2
  temp2 = DisplayRecords()
  '保存到Application.------------------>重點
  Application.Lock
  Application("cache_demo") = temp2
  Application("cache_demo_date") = DateAdd("s",Secs,Now)
  Application.UnLock
  DisplayCachedRecords = temp2
  ' 這里隨便寫上了記錄的緩存的過去時間,相對總秒數倒差 :
  Response.Write "<b><font color=""red"">刷新緩存顯示 ..."
  Response.Write "</font></b><br><br>"
  End If
  End Function
  %>

  說明完畢.

  以下為完整無注釋代碼

  調用方法:<%=DisplayCachedRecords(20)%>

  寫在后面的話:如果你感覺你的服務器內存不夠大的話,不要大量使用緩存.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲一区二区三区91 | 特级毛片免费 | 一级免费黄色免费片 | 午夜精品久久久久久久爽 | 日美黄色片| 欧美天堂一区 | 一级做a爰性色毛片免费1 | 一级一级一级毛片 | 国产69精品99久久久久久宅男 | 国产成年人在线观看 | 亚洲精品一区二区三区在线看 | 91网页| 欧美精品一级 | 久久精品79国产精品 | 免费观看一区二区三区 | 在线亚洲播放 | 在线视频 欧美日韩 | 97伦理| 久久综合狠狠综合久久 | 日韩黄a| 欧美一级α | 中文字幕四区 | 国产精品一区二区在线 | 337p粉嫩大胆噜噜噜亚瑟影院 | 日本在线播放一区二区三区 | 精品视频一区二区三区四区 | 欧美一区在线观看视频 | 亚州精品在线视频 | 毛片在线免费 | 一区二区久久久久草草 | 国产精品一二区 | 国产九九九九 | 精品一区二区三区欧美 | 国产成人精品区一区二区不卡 | 免费看成年人网站 | 亚洲国产精品高潮呻吟久久 | 在线亚洲欧美 | 国产亚洲精品久久久久5区 日韩一级片一区二区三区 国产精品久久久久av | 一级做受大片免费视频 | 日韩一级视频 | 99精品视频99|