Udostępnij za pośrednictwem


WebMethodAttribute.CacheDuration Właściwość

Definicja

Pobiera lub ustawia liczbę sekund, w których powinna znajdować się odpowiedź w pamięci podręcznej.

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

Wartość właściwości

Liczba sekund, w których powinna znajdować się odpowiedź w pamięci podręcznej. Wartość domyślna to 0, co oznacza, że odpowiedź nie jest buforowana.

Przykłady

Poniższy przykład umieszcza wynik wywołania ServiceUsage metody usługi sieci Web XML w pamięci podręcznej przez 60 sekund. Za każdym razem, gdy klient usługi sieci Web XML wykonuje metodę ServiceUsage usługi sieci Web XML w tym czasie, zwracany jest ten sam wynik.

<%@ 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

Uwagi

Gdy buforowanie jest włączone, żądania i odpowiedzi są przechowywane w pamięci na serwerze przez co najmniej czas trwania pamięci podręcznej, dlatego należy zachować ostrożność, jeśli oczekujesz, że żądania lub odpowiedzi będą bardzo duże lub oczekujesz, że żądania będą się znacznie różnić.

Istnieją dwa problemy, które mogą mieć wpływ na buforowanie danych wyjściowych w aplikacji usługi internetowej ASP.NET 2.0.

W ASP.NET 2.0 metoda HTTP strony testowej zmieniła się z GET na POST. Jednak poSTs nie są zwykle buforowane. Jeśli zmienisz stronę testową w aplikacji usługi internetowej ASP.NET 2.0 w celu korzystania z polecenia GET, buforowanie działa prawidłowo.

Ponadto protokół HTTP wskazuje, że agent użytkownika (przeglądarka lub aplikacja wywołująca) powinien mieć możliwość zastąpienia buforowania serwera przez ustawienie opcji "Cache-Control" na "no-cache". ASP.NET w związku z tym aplikacje ignorują buforowane wyniki, gdy znajdą nagłówek "no-cache".

Dotyczy