亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用屬性阻止ASP.NET MVC中的緩存以執行特定操作

使用屬性阻止ASP.NET MVC中的緩存以執行特定操作

LEATH 2019-07-26 11:42:30
使用屬性阻止ASP.NET MVC中的緩存以執行特定操作我有一個ASP.NET MVC 3應用程序。此應用程序通過JQuery請求記錄。JQuery回調一個以JSON格式返回結果的控制器動作。我無法證明這一點,但我擔心我的數據可能會被緩存。我只希望將緩存應用于特定操作,而不是所有操作。是否有一個屬性可以放在一個動作上以確保數據不會被緩存?如果沒有,我如何確保瀏覽器每次都獲得一組新記錄而不是緩存集?
查看完整描述

3 回答

?
慕后森

TA貢獻1802條經驗 獲得超5個贊

要確保JQuery不緩存結果,請在ajax方法上添加以下內容:

$.ajax({
    cache: false
    //rest of your ajax setup});

或者為了防止MVC中的緩存,我們創建了自己的屬性,你也可以這樣做。這是我們的代碼:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]public sealed class NoCacheAttribute : ActionFilterAttribute{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
        filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
        filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
        filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        filterContext.HttpContext.Response.Cache.SetNoStore();

        base.OnResultExecuting(filterContext);
    }}

然后用你的控制器裝飾[NoCache]。或者為所有你可以把屬性放在你繼承你的控制器的基類的類(如果你有的話),就像我們在這里:

[NoCache]public class ControllerBase : Controller, IControllerBase

如果您需要它們是不可緩存的,而不是裝飾整個控制器,您還可以使用此屬性修飾某些操作。

如果您的類或操作NoCache在瀏覽器中呈現時沒有,并且您想檢查它是否正常工作,請記住在編譯更改后,您需要在瀏覽器中執行“硬刷新”(Ctrl + F5)。在您執行此操作之前,您的瀏覽器將保留舊的緩存版本,并且不會使用“正常刷新”(F5)刷新它。


查看完整回答
反對 回復 2019-07-26
  • 3 回答
  • 0 關注
  • 525 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號