SqlDataSource.CacheDuration プロパティ
アセンブリ: System.Web (system.web.dll 内)

Dim instance As SqlDataSource Dim value As Integer value = instance.CacheDuration instance.CacheDuration = value
/** @property */ public int get_CacheDuration () /** @property */ public void set_CacheDuration (int value)
SqlDataSource が Select 操作の結果をキャッシュする秒数。既定値は 0 です。この値には、負の値を指定することはできません。

SqlDataSource コントロールは、データのキャッシュをサポートしています。データがキャッシュされる間、Select メソッドは、基になるデータベースではなくキャッシュからデータを取得します。キャッシュの有効期限が切れると、Select メソッドは基になるデータベースからデータを取得し、そのデータを再びキャッシュします。
EnableCaching プロパティが true に設定され、CacheDuration プロパティ (キャッシュ エントリが破棄されるまでの、キャッシュにデータが格納されている秒数) が 0 より大きい値に設定されている場合、SqlDataSource コントロールはデータを自動的にキャッシュします。値 0 は、キャッシュ時間が制限されていないことを示します。
キャッシュの動作は、存続期間と CacheExpirationPolicy プロパティの組み合わせによって決定されます。CacheExpirationPolicy プロパティを Absolute 値に設定した場合、SqlDataSource は最初のデータ取得操作でデータをキャッシュし、最長で CacheDuration プロパティで指定された時間、メモリ内にデータを保持します。メモリが必要になった場合、データは存続期間の途中でも解放されることがあります。この場合、キャッシュは次の操作時に更新されます。CacheExpirationPolicy プロパティを Sliding 値に設定した場合、データ ソース コントロールは、最初のデータ取得操作でデータをキャッシュしますが、これ以降操作を行うたびに、キャッシュを保持する時間ウィンドウをリセットします。最後の Select 操作の後、CacheDuration 値で指定された時間が経過してもアクティビティがない場合は、キャッシュの有効期限が切れます。
SqlDataSource コントロールがデータをキャッシュできるのは、DataSet モードの場合だけです。SqlDataSource コントロールが DataReader 値に設定され、キャッシュも有効な場合、Select メソッドによって NotSupportedException 例外がスローされます。
![]() |
---|
Microsoft Windows 認証でクライアント偽装を使用している場合、最初のユーザーがデータにアクセスすると、データがキャッシュされます。別のユーザーが同じデータを要求した場合、データはキャッシュから取得されます。データベースに対してもう一度呼び出しを行っても、ユーザーのデータへのアクセスを確認するためにデータ取得を実行することはありません。複数ユーザーによるデータへのアクセスが想定され、データが取得されるたびにデータベースのセキュリティ構成を使用して検証することを希望する場合は、キャッシュを使用しないでください。 |

データ キャッシュが有効な状態で、Microsoft SQL Server の Northwind データベースからデータを取得し、GridView コントロールに表示する方法を次のコード例に示します。CacheDuration は 20 秒に設定されます。既定では、CacheExpirationPolicy プロパティが Absolute 値に設定されているため、このページのユーザーに対して 20 秒ごとに新しいデータが表示されます。
<%@ Page language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML> <BODY> <FORM runat="server"> <asp:SqlDataSource id="SqlDataSource1" runat="server" DataSourceMode="DataSet" ConnectionString="<%$ ConnectionStrings:MyNorthwind%>" EnableCaching="True" CacheDuration="20" SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees"> </asp:SqlDataSource> <asp:GridView id="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"> <columns> <asp:BoundField HeaderText="First Name" DataField="FirstName" /> <asp:BoundField HeaderText="Last Name" DataField="LastName" /> <asp:BoundField HeaderText="Title" DataField="Title" /> </columns> </asp:GridView> </FORM> </BODY> </HTML>
<%@ Page language="CS" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML> <BODY> <FORM runat="server"> <asp:SqlDataSource id="SqlDataSource1" runat="server" DataSourceMode="DataSet" ConnectionString="<%$ ConnectionStrings:MyNorthwind%>" EnableCaching="True" CacheDuration="20" SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees"> </asp:SqlDataSource> <asp:GridView id="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"> <columns> <asp:BoundField HeaderText="First Name" DataField="FirstName" /> <asp:BoundField HeaderText="Last Name" DataField="LastName" /> <asp:BoundField HeaderText="Title" DataField="Title" /> </columns> </asp:GridView> </FORM> </BODY> </HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML> <BODY> <FORM runat="server"> <asp:SqlDataSource id="SqlDataSource1" runat="server" DataSourceMode="DataSet" ConnectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" EnableCaching="True" CacheDuration="20" SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees"> </asp:SqlDataSource> <asp:GridView id="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"> <Columns> <asp:BoundField HeaderText="First Name" DataField="FirstName" /> <asp:BoundField HeaderText="Last Name" DataField="LastName" /> <asp:BoundField HeaderText="Title" DataField="Title" /> </Columns> </asp:GridView> </FORM> </BODY> </HTML>

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- SqlDataSource.CacheDuration プロパティのページへのリンク