我試圖讓ASP.Net通過設置WebMethod
屬性的CacheDuration
屬性緩存Web服務請求的響應:疑難解答ASP.Net緩存 - CacheDuration屬性似乎沒有任何效果
[WebMethod(CacheDuration = 60)]
[ScriptMethod(UseHttpGet = true)]
public static List<string> GetNames()
{
return InnerGetNames();
}
上面是一個ASP.Net頁面上的方法(我也嘗試將它移動到它自己的類,但它似乎沒有任何區別) - 我已將UseHttpGet
設置爲true,因爲POST
請求不是緩存,但儘管我盡了最大的努力,但它似乎仍然沒有任何區別(在方法開始時放置的斷點總是被擊中)。
這是我用來調用該方法的代碼:
%.ajax({
url: "MyPage.aspx/GetNames",
contentType: "application/json; charset=utf-8",
success: function() {
alert("success");
}
有什麼,我已經錯過了,這可能是防止ASP.Net從緩存這種方法嗎?
失敗了,是否有任何診斷機制可以用來更清楚地瞭解ASP.Net緩存正在發生什麼?
經過這已經 - 沒有緩存控制頭中發送 - 我也嘗試設置Cache-Control頭自己明確,但沒有區別。 – Justin 2010-10-20 06:08:29
嘗試在ASP.NET應用計數器集,緩存API條目和輸出緩存條目(也可能是同一區域中的命中/未命中計數器)的服務器上查看perfmon。這至少會告訴你,如果ASP.Net緩存項目,但不發送它們,或緩存輸出,但由於某種原因,決定每個頁面在某種程度上是獨一無二的,並緩存它們(例如,你應該看到項目數量在第一請求和高速緩存命中上升爲後續如果它的工作,但如果條目隨着每個請求增加,它認爲請求是由於某種原因不同)。 – 2010-10-21 00:59:24