■データをキャッシングする

 

● CacheオブジェクトのInsert/Getメソッド ~DataCache.aspx

 

DataGridなどのデータコントロールに、XMLデータやデータベースをバインドして表示するとき、データをキャッシングするとWebページの表示を高速化することができます。Webページ全体をキャッシングするには、@OutputCacheディレクティブを追加しますが、データベースの内容をWebページに表示するときはWebページをキャッシングしても効果がありません。このような場合、データベースのデータそのものをキャッシングします。

 

DataSetDataTableなどのオブジェクトをキャシングするには、CacheオブジェクトのInsertメソッドを使用します。Insertメソッドの引数には、キーとオブジェクトを指定します。

 

Cache.Insert("VisualStudio", ds)

 

メモリ上にキャッシュされたDataSetDataTableオブジェクトを取得するには、CacheオブジェクトのGetメソッドを使用します。

 

ds = Cache.Get(“VisualStudio”)

 

Getメソッドの引数には、Insertメソッドで使用したキーを指定します。なお、Getメソッドを省略してCache(“VisualStudio”)のように記述することもできます。

 

メモリ上にキャッシュされたDataSet/DataTableは、Webサーバーの空きメモリが不足すると無効にされますので、Getメソッドでキャッシュしたオブジェクトを取得したら、必ず有効になっているかチェックする必要があります。キャッシングが無効になっているときは、GetメソッドからNullが返されます。

 

ds = Cache.Get(“VisualStudio”)

If ds Is Nothing Then

  キャッシュが無効になっているときの処理

End If

 

キャッシュを強制的に無効にするには、CacheオブジェクトのRemoveメソッドを使用します。

 

Cache.Remove(“VisualStudio”)

 

Removeメソッドの引数には、Insertメソッドでキャッシュしたときのキーを指定します。

 

CacheオブジェクトのInsertメソッドには、ファイルが変更されたときにキャッシュを無効にするオプション、一定時間経過すると自動的にキャッシングを無効にするオプションなどがサポートされています。

 

4 DataGridXMLデータをバインドして表示

 

リスト5: XMLファイルをDataSetに取り込んでをキャッシングする (DataCache.aspx)

Sub Page_Load(sender As Object, e As EventArgs)

  BindGrid()

End Sub

 

Sub BindGrid()

  Dim ds As DataSet

  ds = CType(Cache("VisualStudio"), DataSet)

  If ds Is Nothing Then

    ds = New DataSet("VisualStudio")

    ds.ReadXml( MapPath("webdb/VisualStudio.xml") )

    Cache.Insert("VisualStudio", ds, _

      New CacheDependency( MapPath("webdb/VisualStudio.xml") ))

  End If

  With DataGrid1

    .DataSource = ds

    .DataBind()

  End With

End Sub