WebMethodAttribute.CacheDuration Tulajdonság
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Lekéri vagy beállítja, hogy hány másodpercig kell a választ a gyorsítótárban tartani.
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
Tulajdonság értéke
A válasznak a gyorsítótárban kell tartania a másodpercek számát. Az alapértelmezett érték 0, ami azt jelenti, hogy a válasz nem gyorsítótárazva van.
Példák
Az alábbi példa 60 másodpercre helyezi az ServiceUsage XML webszolgáltatás metódusának hívásának eredményét a gyorsítótárban. Minden alkalommal, amikor egy XML-webszolgáltatás-ügyfél végrehajtja az ServiceUsage XML-webszolgáltatás metódusát ez idő alatt, ugyanaz az eredmény lesz visszaadva.
<%@ 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
Megjegyzések
Ha a gyorsítótárazás engedélyezve van, a kérések és válaszok a kiszolgálón legalább a gyorsítótár időtartama alatt a memóriában vannak tárolva, ezért körültekintően kell eljárni, ha a kérések vagy válaszok nagy méretűek lesznek, vagy a kérések széles körben eltérőek lesznek.
A ASP.NET 2.0-s webszolgáltatás-alkalmazások kimeneti gyorsítótárazását két probléma befolyásolhatja.
A ASP.NET 2.0-s verziójában a tesztlap HTTP-metódusa GET-ről POST-ra változott. A POST-k azonban általában nem gyorsítótárazva vannak. Ha egy ASP.NET 2.0-s webszolgáltatás-alkalmazásban módosítja a tesztlapot a GET használatára, a gyorsítótárazás megfelelően működik.
A HTTP azt is jelzi, hogy egy felhasználói ügynöknek (a böngészőnek vagy a hívó alkalmazásnak) képesnek kell lennie felülbírálni a kiszolgáló gyorsítótárazását úgy, hogy a "Gyorsítótár-vezérlés" beállítást "gyorsítótár nélküli" értékre állítja. ASP.NET alkalmazások ezért figyelmen kívül hagyják a gyorsítótárazott eredményeket, amikor "nem gyorsítótárazott" fejlécet találnak.