WebMethodAttribute.CacheDuration Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece el número de segundos que la respuesta debe mantenerse en la memoria caché.
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
Valor de propiedad
Número de segundos que la respuesta debe mantenerse en la memoria caché. El valor predeterminado es 0, lo que significa que la respuesta no se almacena en caché.
Ejemplos
En el ejemplo siguiente se coloca el resultado de la llamada al ServiceUsage método de servicio web XML en la memoria caché durante 60 segundos. Cada vez que un cliente de servicio web XML ejecuta el ServiceUsage método de servicio web XML durante ese tiempo, se devuelve el mismo resultado.
<%@ 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
Comentarios
Cuando el almacenamiento en caché está habilitado, las solicitudes y las respuestas se mantienen en memoria en el servidor durante al menos la duración de la caché, por lo que debe usarse precaución si espera que las solicitudes o respuestas sean muy grandes o se espera que las solicitudes varían ampliamente.
Hay dos problemas que pueden afectar al almacenamiento en caché de salida en una aplicación de servicio web de ASP.NET 2.0.
En ASP.NET 2.0, el método HTTP de la página de prueba ha cambiado de GET a POST. Sin embargo, los POST no se almacenan normalmente en caché. Si cambia la página de prueba en una aplicación de servicio web de ASP.NET 2.0 para usar GET, el almacenamiento en caché funciona correctamente.
Además, HTTP indica que un agente de usuario (el explorador o la aplicación que llama) debe poder invalidar el almacenamiento en caché del servidor estableciendo "Cache-Control" en "no-cache". ASP.NET aplicaciones, por lo tanto, omite los resultados almacenados en caché cuando encuentran un encabezado "sin caché".