WebMethodAttribute.CacheDuration Vlastnost

Definice

Získá nebo nastaví počet sekund, po které by odpověď měla být uložena 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

Počet sekund, po které by odpověď měla být uložena 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. Kdykoli klient webové služby XML spustí během této doby metodu ServiceUsage webové služby XML, 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 se uchovávají v paměti na serveru po dobu alespoň doby trvání mezipaměti, proto je nutné opatrnosti použít, pokud očekáváte, že požadavky nebo odpovědi budou velmi velké nebo očekáváte, že požadavky se budou značně lišit.

Existují dva problémy, které můžou ovlivnit ukládání výstupu do mezipaměti v 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. PoST se ale obvykle neukládají do mezipaměti. Pokud změníte testovací stránku v aplikaci webové služby ASP.NET 2.0 tak, aby používala 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 mít možnost 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