gpt4 book ai didi

.net - 在 .NET Core 中缓存 API 响应

转载 作者:行者123 更新时间:2023-12-01 23:16:42 24 4
gpt4 key购买 nike

我正在构建一个网站,该网站将具有一个功能,如果您将鼠标悬停在一个对象上,一个特殊的 div 将填充带有该对象详细信息的 ajax。

由于客户端并不是那么重要,我只想说在某些元素上有 jquery 悬停事件触发 ajax .load() with https://api ..../GetDetails/*Id* url,该函数将通过 EntityFramework 获取项目详细信息, View 将类似于

@model Details

<h1>@Model.Name</h1>

(再次简化,因为这不是重点)。

但随着用户群的增长,以及人们可以像疯子一样滑动鼠标这一事实,我认为不缓存它会造成流量问题。

是否可能,如果可能,我该如何缓存响应以便

https://api..../GetDetails/ABC 总是返回相同的东西,而无需进行所有背后的数学运算,而 https://api..../GetDetails/DEF 不返回 ABC 但它也被缓存了吗?

最佳答案

在 ASP.NET Core 中,您可以使用响应缓存。它会让我们将缓存相关的 header 添加到响应中。这些 header 决定了客户端、代理或中间件如何缓存响应。引用文档 ASP.NET Core Response Caching

这是一项广泛的功能,可用于根据请求 header 值确定缓存位置、持续时间和使缓存失效。您甚至可以为不同的场景创建缓存配置文件。部分示例如下

1.按时长缓存

[ResponseCache(Duration = 60)]
public IActionResult Contact()
{
ViewData["Message"] = "Your contact page.";

return View();
}

2.设置缓存位置

[ResponseCache(Duration = 60, Location = ResponseCacheLocation.Client)]
public IActionResult Contact()
{
ViewData["Message"] = "Your contact page.";

return View();
}

3.根据请求头改变响应缓存

[ResponseCache(VaryByHeader = "User-Agent", Duration = 30)]
public IActionResult Contact()
{
ViewData["Message"] = "Your contact page.";

return View();
}
  1. 在启动时创建缓存配置文件

    services.AddMvc(options =>
    {
    options.CacheProfiles.Add("Default",
    new CacheProfile()
    {
    Duration = 60
    });
    options.CacheProfiles.Add("Never",
    new CacheProfile()
    {
    Location = ResponseCacheLocation.None,
    NoStore = true
    });
    });
  2. 根据需要使用缓存配置文件

    [ResponseCache(CacheProfileName = "Default")]
    public IActionResult Index()
    {
    return View();
    }

关于.net - 在 .NET Core 中缓存 API 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44660797/

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