簡體   English   中英

防止在 ASP.NET MVC 中緩存 WEB API 數據

[英]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.csRegisterGlobalFilters方法:

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刪除各個指令。 這樣做的缺點是如果您想從任何控制器啟用緩存,但我的理解是您可以通過在ControllerView級別應用不同的OutputCache指令來覆蓋全局過濾器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM