HttpResponse.AddCacheItemDependency(String) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
這使得快取回應的有效性依賴於快取中的另一個項目。
public:
void AddCacheItemDependency(System::String ^ cacheKey);
public void AddCacheItemDependency(string cacheKey);
member this.AddCacheItemDependency : string -> unit
Public Sub AddCacheItemDependency (cacheKey As String)
參數
- cacheKey
- String
快取回應所依賴的項目的鍵值。
範例
以下範例是一個 ASP.NET 的使用者控制項,輸出快取。 控制項的程式碼會呼叫 AddCacheItemDependency 該方法,並以物件中儲存 Cache 的項目的鍵值作為參數傳遞。 若該項目不存在於快取中,則儲存在輸出快取中的控制項回應將失效。 這表示在後續請求時,控制項回應的新版本會被加入輸出快取。
接著,程式碼檢查物件 bookData 中是否儲存 Cache 與鍵相關的項目,並顯示兩行文字中的一行,取決於結果。 接著,程式碼會以呼叫自訂DataHelper類別的共享GetBookData方法,設定DataGridDataSource一個名為 dgBooks的控制項屬性,並將該方法填充DataGridDataBind。
<%@ Control Language="c#" %>
<%@ Outputcache duration="10" varybyparam="none" shared="True" %>
<%@ Import Namespace = "Samples.AspNet.CS" %>
<%@ Import Namespace = "System.Data" %>
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
// Make user control invalid if the
// cache item changes or expires.
Response.AddCacheItemDependency("bookData");
// Create a DataView object.
DataView source = (DataView)Cache["bookData"];
// Check if the view is stored in the cache
// and generate the right label text
// dependent upon what is returned.
if (source == null)
{
source = DataHelper.GetBookData();
lblCacheMsg.Text = "Data generated explicitly.";
}
else
{
lblCacheMsg.Text = "Data retrieved from application cache.";
}
dgBooks.DataSource = source;
dgBooks.DataBind();
lblOutputMessage.Text = DateTime.Now.ToString();
}
</script>
<table>
<tbody>
<tr>
<th>
Books</th>
<td>
</td>
</tr>
<tr>
<td>
<asp:DataGrid id="dgBooks" runat="server"></asp:DataGrid>
</td>
<td>
</td>
</tr>
<tr>
<td>
<asp:Label id="lblCacheMsg" runat="server"></asp:Label>
</td>
<td>
</td>
</tr>
<tr>
<td>
The control was created at:
</td>
<td>
<asp:Label id="lblOutputMessage" runat="server"></asp:Label>
</td>
</tr>
</tbody>
</table>
<%@ Control Language="vb" %>
<%@ Outputcache duration="10" varybyparam="none" shared="True" %>
<%@ Import Namespace="Samples.AspNet.VB" %>
<%@ Import Namespace="System.Data" %>
<script runat="server">
Private Sub Page_Load(sender As Object, e As System.EventArgs)
' Make user control invalid if the
' cache item changes or expires.
Response.AddCacheItemDependency("bookData")
' Create a DataView object.
Dim source As DataView = Cache("bookData")
' Check if the view is stored in the cache
' and generate the right label text
' dependent upon what is returned.
If source Is Nothing Then
source = DataHelper.GetBookData()
lblCacheMsg.Text = "Data generated explicitly."
Else
lblCacheMsg.Text = "Data retrieved from application cache."
End If
dgBooks.DataSource = source
dgBooks.DataBind()
lblOutputMessage.Text = DateTime.Now.ToString()
End Sub
</script>
<table>
<tbody>
<tr>
<th>
Books</th>
<td>
</td>
</tr>
<tr>
<td>
<asp:DataGrid id="dgBooks" runat="server"></asp:DataGrid>
</td>
<td>
</td>
</tr>
<tr>
<td>
<asp:Label id="lblCacheMsg" runat="server"></asp:Label>
</td>
<td>
</td>
</tr>
<tr>
<td>
The control was created at:
</td>
<td>
<asp:Label id="lblOutputMessage" runat="server"></asp:Label>
</td>
</tr>
</tbody>
</table>
備註
當對應 cacheKey 參數的項目從快取中移除時,目前快取項目的回應即無效。