以前に書いたこと: この記事はまだ ASP に関連しています。ASP をプレイしている人は皆そう感じていると思います。音楽ネットワークと同じように、最新の 10 個を呼び出して表示する必要があります。問題は、n 人の複数のユーザーがアクセスするためにページを開くときに、各ユーザーが毎回データベースを読み取る必要があることです。これにより、データがメモリに保存されてから読み取られる場合は、明らかに効率が低下します。 , いわゆるキャッシュは、実際にはデータを保存するためにメモリ内にスペースを空けることで、ハードディスクに保存したデータに頻繁にアクセスする必要がなくなることを期待しています。すべてのユーザーがこのデータを参照できるため、その効果は同じです。アプリケーション オブジェクトはすべての訪問者に共通のオブジェクトであるため、所有者の訪問者が使用する必要があります。組み込みオブジェクトAPPLICATION。アプリケーションに関しては、2つのメソッド[lockとunlock]、2つのコレクション[contentとstaticobjects]、2つのイベント[application_onstartとapplication_end]があり、アプリケーション変数は一度確立すると消えません。ウェブサイトが閉じられ、プログラムがアンインストールされるまで待機します。このため、使用するときは特に注意する必要があります。そうしないと、メモリを占有します。関連する情報を確認してください。大まかに言うと、指定した時間にデータを読み取って更新するというものです。
まず、それを読み取る関数を作成します。を作成し、それを dim 変数 temp に書き込みます。
以下は参照フラグメントです。
関数 DisplayRecords()
'この関数は元々、記録された値 Dim sql、conn、rs を変数 temp に割り当てました。
'条件付き 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
'Dim temp を temp 変数に代入します
temp = "<テーブル幅=""90%"" align=""中心"""
temp = temp & " border=""1"" bordercolor=""silver"""
temp = temp & " cellpacing=""2"" cellpadding=""0"">"
temp = temp & "<tr bgcolor=""#CCDDEE""><td width=""5%"""
temp = temp & ">ID</td><td>オペレーション</td>"
temp = temp & "<td>数値</td></tr>"
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 = 温度 & "</td></tr>"
rs.次へ移動
ウェン
temp = 温度 & "</table>"
'一時割り当てが完了したら、関数 DisplayRecords = temp に戻します。
それ以外
DisplayRecords = "データが利用できません。"
終了の場合
'メモリを解放します rs.Close
接続閉じる
Setrs=なし
conn = なしを設定します
終了機能
OK、上記の関数は変換されており、呼び出されたときは DisplayRecords になります。
ここでアプリケーションが活躍します。
'この関数はキャッシュに書き込む関数です。 Function DisplayCachedRecords(Secs)
ディム retVal、datVal、temp1
'Secs は毎回データを更新する時間、retVal はデータ、datVal は残り時間です retVal = Application("cache_demo") 'アプリケーションの値を取得します datVal = Application("cache_demo_date") 'アプリケーションの値を取得します' datVal の値を判定、つまり時間が経過したかどうかを計算します If datVal = "" then
' 空の場合、datVal 値は秒単位の現在の時刻に、secs で定義された時刻を加算したものになります datVal = DateAdd("s",Secs,Now)
終了の場合
'temp1 は現在時刻と datVal の 2 番目の差です temp1 = DateDiff("s", Now, datVal)
' retVal がすでに上記の関数の戻り値であり、時間が 0 より大きい場合
temp1 > 0 かつ retVal <> "" の場合
'この関数はレコード数を返します DisplayCachedRecords = retVal
Response.Write "<b><font color=""green"">キャッシュを使用してデータを読み取る"
Response.Write " ... (" & temp1 & " 残り秒数)</font></b>"
応答。「<br><br>」と書き込みます。
それ以外
'retVal が空の場合、DisplayRecords の値を変数 temp2 に代入します。
薄暗い温度2
temp2 = DisplayRecords()
'アプリケーションに保存.----------------->アプリケーションにフォーカス.ロック
アプリケーション("cache_demo") = temp2
Application("cache_demo_date") = DateAdd("s",Secs,Now)
アプリケーション.ロック解除
DisplayCachedRecords = temp2
' ここに記録されたキャッシュの過去の時間がさりげなく書き込まれており、合計秒数に対する差は次のようになります。
Response.Write "<b><font color=""red"">キャッシュ表示を更新..."
応答。「</font></b><br><br>」と書き込みます。
終了の場合
終了機能
%>
説明は完了です。
以下は、コメントされていない完全なコード
呼び出しメソッドです: <%=DisplayCachedRecords(20)%>
最後に記載されています: サーバーのメモリが十分に大きくないと思われる場合は、大量のメモリを使用しないでください。キャッシュ。