WebMethodAttribute.CacheDuration Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Yanıtın önbellekte tutulması gereken saniye sayısını alır veya ayarlar.
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
Özellik Değeri
Yanıtın önbellekte tutulması gereken saniye sayısı. Varsayılan değer 0'dır, yani yanıt önbelleğe alınmaz.
Örnekler
Aşağıdaki örnek, XML Web hizmeti yöntemine yapılan çağrının ServiceUsage
sonucunu 60 saniye boyunca önbelleğe yerleştirir. Bir XML Web hizmeti istemcisi bu süre boyunca XML Web hizmeti yöntemini her yürüttüğünde ServiceUsage
aynı sonuç döndürülür.
<%@ 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
Açıklamalar
Önbelleğe alma etkinleştirildiğinde istekler ve yanıtlar en az önbellek süresi boyunca sunucuda bellekte tutulur, bu nedenle isteklerin veya yanıtların çok büyük olmasını veya isteklerin büyük ölçüde değişmesini bekliyorsanız dikkatli olun.
ASP.NET 2.0 Web hizmeti uygulamasında çıktı önbelleğini etkileyebilecek iki sorun vardır.
ASP.NET 2.0'da test sayfasının HTTP yöntemi GET olan POST olarak değiştirilmiştir. Ancak, POST'ler normalde önbelleğe alınmaz. ASP.NET 2.0 Web hizmeti uygulamasındaki test sayfasını GET kullanacak şekilde değiştirirseniz, önbelleğe alma düzgün çalışır.
Buna ek olarak, HTTP bir kullanıcı aracısının (tarayıcı veya çağıran uygulama) "Cache-Control" değerini "önbellek yok" olarak ayarlayarak sunucu önbelleğini geçersiz kılabilmesi gerektiğini belirtir. Bu nedenle ASP.NET uygulamalar bir "önbellek yok" üst bilgisi bulduklarında önbelleğe alınan sonuçları yoksayın.