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 サービス クライアントが XML Web サービス メソッドを ServiceUsage
実行するたびに、同じ結果が返されます。
<%@ 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 サービス アプリケーションの出力キャッシュに影響を及ぼす可能性がある問題が 2 つあります。
ASP.NET 2.0 では、テスト ページの HTTP メソッドが GET から POST に変更されました。 しかし、通常、POST はキャッシュされません。 GET を使用するように ASP.NET 2.0 Web サービス アプリケーションのテスト ページを変更すれば、キャッシュは正常に動作します。
また、HTTP では、ユーザー エージェント (ブラウザーまたは呼び出し元アプリケーション) で、"Cache-Control" を "no-cache" に設定することによってサーバーのキャッシュ機能をオーバーライドできる必要があることが示されています。 このため ASP.NET アプリケーションでは、"no-cache" ヘッダーを見つけた場合に、キャッシュされた結果を無視します。
適用対象
.NET