当前位置: 首页 > 知识库问答 >
问题:

防止在ASP.NET MVC中缓存WEB API数据

欧阳睿范
2023-03-14

我有一个ASP.NET MVC 5应用程序。该应用程序通过WEB API WEB服务请求记录。WEB API回调到以JSON格式返回结果的exctetion方法。我无法证明这一点,但我担心我的数据可能会被缓存。

是否有一个属性可以放在操作上,以确保数据不会被缓存?如果没有,如何确保浏览器每次都获得一组新记录,而不是缓存的记录?

我把下面的属性放在操作上,以确保数据不会被缓存,但在插入数据后不会正常工作。因此,在重置之后,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;

    }
}

共有1个答案

岳池暝
2023-03-14

我也使用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
        });
    }
}

一旦我有了这个位置,我就可以从各个控制器中删除各个指令。这样做的缺点是,如果您希望从任何控制器启用缓存,但我的理解是,您可以通过在控制器视图级别应用不同的outputcache指令来重写全局筛选器。

 类似资料:
  • 我发现了与jQuery相关的类似问题。我的目标是找出如何防止jQueryMobile和PhoneGap中的缓存(我使用JSONP)。我正在进行一些ajax调用,动态地填充listview。我想在每次初始化页面(pageinit)时查询web服务。在我的android设备上,在新的查询之后,每次我进入页面时,数据都会添加到listview中。它不会删除,每次我访问页面时,我都会添加一个副本。我认为这

  • 问题内容: 我正在使用PHP开发一个简单的网站。 开发配置: WAMP 生产配置: LAMP 在测试时,我更改了CSS文件,但是当我重新加载页面时,我的浏览器(不确定)仍使用旧的缓存CSS。 我进行了一些谷歌搜索,发现了已经尝试过的其他解决方案 在CSS末尾附加查询 使用(在Firefox中)强制获取资源 禁用Firefox缓存以及使用Firefox加载项。 当这些都不起作用时,我做了更多的谷歌搜

  • 我有一个restendpoint,它在GET调用时返回一个列表。我还有一个POSTendpoint来添加新项目,还有一个DELETEendpoint来删除它们。这在Firefox和Chrome中有效,在IE11中发布和删除也有效。然而,GET-in-IE11只在页面的初始加载时起作用。刷新将返回缓存的数据。我在Angular 1中看到过关于这种行为的帖子,但在Angular 2(发布候选1)中没有

  • 问题内容: 我已经编写了一个Linux驱动程序,该驱动程序ioremaps将特定设备的PCI BAR0导出为sysfs二进制属性,允许用户空间直接控制它。 当我尝试在属性顶部使用MMAP来直接访问该位内存(从Userland程序)时,问题就浮现了。读取可以很好地完成并返回期望值,尽管当我写入该内存时,它似乎被缓存在内核和内存之间的某个地方,而不是传递给GM​​CH根联合体(以及设备)。我想做的是每

  • 我有从我的网页生成的AJAX POST请求,可能有多个POST请求具有相同的POST数据。但是响应可能会有所不同,我希望确保我没有得到这些请求的缓存响应。我需要每个请求点击网页。 我假设对POST请求的响应不会被缓存,这对吗?

  • 我的项目是这样组织的: 在我的calculate.js文件中,我对数据库进行了一个ajax调用,并且我检索了一些值以显示在statistics.html中的表中,但问题是,一旦计算出这些值,这些值就会被缓存,当我再次调用calculate.js以获取其他数据时,第一次显示的信息也是相同的。 但他们还在。我怎么解决这个? 编辑: 这是我的rest控制器:@RequestMapping(value=“