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 です。これは、応答がキャッシュされていないことを意味します。
例
次の例では、 ServiceUsage XML Web サービス メソッドの呼び出しの結果をキャッシュに 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 サービス アプリケーションの出力キャッシュに影響する可能性がある 2 つの問題があります。
ASP.NET 2.0 では、テスト ページの HTTP メソッドが GET から POST に変更されました。 ただし、通常、POS はキャッシュされません。 get を使用するように ASP.NET 2.0 Web サービス アプリケーションのテスト ページを変更すると、キャッシュが正しく機能します。
さらに、HTTP は、ユーザー エージェント (ブラウザーまたは呼び出し元のアプリケーション) が、"Cache-Control" を "キャッシュなし" に設定してサーバー キャッシュをオーバーライドできることを示します。 したがって、アプリケーション ASP.NET、"no-cache" ヘッダーが見つかると、キャッシュされた結果は無視されます。