共用方式為


WebMethodAttribute.CacheDuration 屬性

定義

取得或設定回應保留在快取中應有的秒數。

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" 標頭時,便會忽略快取的結果。

適用於