WebMethodAttribute.CacheDuration Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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.