WebMethodAttribute.CacheDuration Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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".