WebMethodAttribute.CacheDuration 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定回應保留在快取中應有的秒數。
public:
property int CacheDuration { int get(); void set(int value); };
public int CacheDuration { get; set; }
member this.CacheDuration : int with get, set
Public Property CacheDuration As Integer
屬性值
秒數,為應該保留在快取中的回應。 預設值為 0,這表示沒有快取回應。
範例
下列範例會將對 XML Web 服務方法的呼叫 ServiceUsage
結果放在快取中 60 秒。 每當 XML Web 服務用戶端在該時間執行 ServiceUsage
XML Web 服務方法時,就會傳回相同的結果。
<%@ WebService Language="C#" Class="Counter" %>
using System.Web.Services;
using System;
using System.Web;
public class Counter : WebService {
[ WebMethod(Description="Number of times this service has been accessed",
CacheDuration=60,MessageName="ServiceUsage") ]
public int ServiceUsage() {
// If the XML Web service has not been accessed, initialize it to 1.
if (Application["MyServiceUsage"] == null) {
Application["MyServiceUsage"] = 1;
}
else {
// Increment the usage count.
Application["MyServiceUsage"] = ((int) Application["MyServiceUsage"]) + 1;
}
// Return the usage count.
return (int) Application["MyServiceUsage"];
}
}
<%@ WebService Language="VB" Class="Counter" %>
Imports System.Web.Services
Imports System
Imports System.Web
Public Class Counter
Inherits WebService
<WebMethod(Description := "Number of times this service has been accessed", _
CacheDuration := 60, _
MessageName := "ServiceUsage")> _
Public Function ServiceUsage() As Integer
' If the XML Web service has not been accessed, initialize it to 1.
If Application("MyServiceUsage") Is Nothing Then
Application("MyServiceUsage") = 1
Else
' Increment the usage count.
Application("MyServiceUsage") = CInt(Application("MyServiceUsage")) + 1
End If
' Return the usage count.
Return CInt(Application("MyServiceUsage"))
End Function
End Class
備註
當啟用快取要求,且回應至少會保留在伺服器上的記憶體中,因此當您預期要求或回應非常大,或您預期要求大不相同時,必須使用警告。
有兩個問題會影響 ASP.NET 2.0 Web 服務應用程式中的輸出快取。
在 ASP.NET 2.0 中,測試頁的 HTTP 方法已從 GET 變更為 POST。 但是,POST 通常不會快取。 如果在 ASP.NET 2.0 Web 服務應用程式中將測試頁變更為使用 GET,快取就可以正確運作。
另外,表示使用者代理程式 (瀏覽器或呼叫應用程式) 的 HTTP 應該能夠透過將 "Cache-Control" 設定為 "no-cache" 以覆寫伺服器快取。 因此,當 ASP.NET 應用程式發現 "no-cache" 標頭時,便會忽略快取的結果。