gpt4 book ai didi

asp.net-mvc - 在 404 响应上设置 Http 缓存 header 是否有意义?

转载 作者:可可西里 更新时间:2023-11-01 16:57:50 26 4
gpt4 key购买 nike

我有一个存储图像的数据库,可以通过主键 ID 访问这些图像(呕吐,我知道,但这是我无法控制的)。

我有一个非常标准的 Asp .net Mvc Controller ,它读取数据库,如果在数据库中找到一行,它将图像字节作为 FileResult 返回。如果未找到行,我有一个自定义操作结果,将响应状态设置为 404。我不会抛出异常,而是让 IIS 处理 404 状态并返回一个静态文件。

public class ContentMediaNotFoundResult : ActionResult
{
public ContentMediaNotFoundResult() { }

public override void ExecuteResult(ControllerContext context)
{
//-- Here the only thing we are doing is setting the Response code to 404 and then we are going to let IIS service the request
//-- based on the settings in system.webServer/httpErrors (which may come from the root .config, so be careful)
context.HttpContext.Response.StatusCode = 404;
}
}

最近,我们在 Firefox v3.6.1 上进行测试,发现浏览器对每个图像发出多个请求(准确地说是 3 个),因此我们的 Controller 工厂被命中 3 次,并从我们的数据库中访问数据库 3 次 Action 方法。这种行为只发生在 Firefox(IE、chrome 是正常的)。

我的问题是,将 Http 缓存 header 添加到我的 ContentMediaNotFoundResult 中的 404 响应是否有意义,这样我的操作方法就不会持续访问数据库。

最佳答案

当然,您可以为 404 设置缓存 header 。正如@Darin 提到的,您的缓存老化可能会影响替换 404's 图像的任何问题,但这与缓存任何可能更改的对象的问题相同。

似乎只有 5xx 错误不应该被缓存,但 4xx 就可以了。

关于asp.net-mvc - 在 404 响应上设置 Http 缓存 header 是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3909248/

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