gpt4 book ai didi

caching - 如何停止 MVC 缓存调用操作方法的结果?

转载 作者:行者123 更新时间:2023-12-04 13:08:59 24 4
gpt4 key购买 nike

我在 IE 缓存操作方法的结果时遇到问题。

我发现的其他文章与安全性和 [Authorize] 属性有关。这个问题与安全无关。

这是一个非常简单的“记录一票,抓取平均值,返回平均值和投票数”的方法。唯一有点有趣的是它通过 Ajax 调用并返回一个 Json 对象。我相信它是被缓存的 Json 对象。

当我从 FireFox 运行它并使用 Firebug 观察 XHR 流量时,一切正常。然而,在 IE 8 下,“throbber”图形永远没有时间显示,并且显示"new"平均值和计数的页面元素从未不同。

我需要一种方法来告诉 MVC 永远不要缓存这个操作方法。

这篇文章似乎解决了这个问题,但我无法理解:
Prevent Caching of Attributes in ASP.NET MVC, force Attribute Execution every time an Action is Executed

我需要更多上下文来了解如何扩展 AuthorizationAttribute 的解决方案。请回答您的回答,就像您是在与对 MVC 缺乏深入了解的人交谈一样,即使这意味着回复一篇关于一些必需基础知识/先决条件的文章。

谢谢,

特雷卡罗尔

最佳答案

MVC 不缓存结果。 IE 可以。

所以你必须告诉 IE 不要这样做。

这是我如何做到的。首先是一个属性:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public sealed class CacheControlAttribute : ActionFilterAttribute
{
public CacheControlAttribute(HttpCacheability cacheability)
{
this._cacheability = cacheability;
}

public HttpCacheability Cacheability { get { return this._cacheability; } }

private HttpCacheability _cacheability;

public override void OnActionExecuted(ActionExecutedContext filterContext)
{
HttpCachePolicyBase cache = filterContext.HttpContext.Response.Cache;
cache.SetCacheability(_cacheability);
}
}

接下来,一个 Action :
    [CacheControl(HttpCacheability.NoCache), HttpGet]
public JsonResult MyAction()

关于caching - 如何停止 MVC 缓存调用操作方法的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2969450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com