Sdílet prostřednictvím


WebMethodAttribute.CacheDuration Vlastnost

Definice

Získá nebo nastaví počet sekund, které má odpověď uchovávat v mezipaměti.

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

Hodnota vlastnosti

Int32

Počet sekund, po které by se odpověď měla uchovávat v mezipaměti. Výchozí hodnota je 0, což znamená, že odpověď není uložena do mezipaměti.

Příklady

Následující příklad umístí výsledek volání ServiceUsage metody webové služby XML do mezipaměti po dobu 60 sekund. Pokaždé, když klient webové služby XML spustí metodu ServiceUsage webové služby XML během této doby, vrátí se stejný výsledek.

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

Poznámky

Pokud je ukládání do mezipaměti povolené požadavky a odpovědi jsou uloženy v paměti na serveru po dobu alespoň doby trvání mezipaměti, proto je potřeba opatrnost použít, pokud očekáváte, že požadavky nebo odpovědi budou velmi velké nebo očekáváte, že se požadavky budou značně lišit.

Existují dva problémy, které můžou ovlivnit ukládání výstupu do mezipaměti ve webové aplikaci webové služby ASP.NET 2.0.

V ASP.NET 2.0 se metoda HTTP testovací stránky změnila z GET na POST. Funkce POST se ale obvykle neukládají do mezipaměti. Pokud změníte testovací stránku ve webové službě ASP.NET 2.0 tak, aby používala funkci GET, funguje ukládání do mezipaměti správně.

Kromě toho http označuje, že uživatelský agent (prohlížeč nebo volající aplikace) by měl být schopen přepsat ukládání serveru do mezipaměti nastavením "Cache-Control" na "no-cache". ASP.NET aplikace proto při hledání hlavičky "no-cache" ignorují výsledky uložené v mezipaměti.

Platí pro