[英]prevent caching WEB API data in ASP.NET MVC
我有一個 ASP.NET MVC 5 應用程序。 此應用程序通過 WEB API Web 服務請求記錄。 WEB API 回調一個 exctetion 方法,該方法以 JSON 格式返回結果。 我無法證明這一點,但我擔心我的數據可能會被緩存。
我只希望緩存應用於特定操作,而不是所有操作。
是否有一個屬性可以用來確保數據不會被緩存? 如果沒有,我如何確保瀏覽器每次都獲得一組新記錄,而不是緩存集?
我將以下屬性放在操作上以確保數據不會被緩存。但插入數據后無法正常工作。 因此,在重置 IIS 后,更改生效。
[System.Web.Mvc.OutputCacheAttribute(VaryByParam = "*", Duration = 0, NoStore = true)]
public class UserController : ApiController
{
[HttpPost]
[NoCache]
public List<DataModel> Get()
{
var result= ExtMethod.GetData();
return result;
}
}
我也使用 ASP.NET MVC5 應用程序,並將OutputCache
指令添加到我的常規控制器和 API 控制器中。 我仍然有一些緩存正在進行。 在我的情況下,將緩存阻止代碼移動到一個中心位置似乎有幫助:到App_Start/FilterConfig.cs
的RegisterGlobalFilters
方法:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
// ...
filters.Add(new OutputCacheAttribute
{
NoStore = true,
Duration = 0,
VaryByParam = "*",
Location = System.Web.UI.OutputCacheLocation.None
});
}
}
一旦我有了它,我就可以從各種Controller
刪除各個指令。 這樣做的缺點是如果您想從任何控制器啟用緩存,但我的理解是您可以通過在Controller
或View
級別應用不同的OutputCache
指令來覆蓋全局過濾器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.