ASP.NET MVC OutputCache 不适用于根 URI

Posted

技术标签:

【中文标题】ASP.NET MVC OutputCache 不适用于根 URI【英文标题】:ASP.NET MVC OutputCache doesn't work for root URI 【发布时间】:2008-11-27 10:52:20 【问题描述】:

我正在学习 ASP.NET MVC,但遇到了一个问题。

在 HomeController 中,Index 动作有 OutputCache 属性,但似乎不起作用。

[HandleError]
public class HomeController : Controller

    [OutputCache(Duration=5, VaryByParam="none")]
    public ActionResult Index()
    
        ViewData["Title"] = "Home Page" + DateTime.Now;
        ViewData["Message"] = "Welcome to ASP.NET MVC! " + DateTime.Now;

        return View();
    

尝试了好几分钟后,我发现这是由于我访问操作的方式所致。如果我通过“http://localhost:3573/”访问它,则输出缓存不起作用。但是,如果我使用“http://localhost:3575/Home/Index”访问它,则输出缓存可以工作。

有人知道使默认控制器动作输出可缓存的任何解决方法吗?

谢谢。

【问题讨论】:

我在这里看到了同样的问题。 你们中有人使用 chrome 吗?我注意到 chrome 缓存有些奇怪 【参考方案1】:

我认为这是 ASP.NET MVC 中的一个错误。我们已在我们的数据库中记录了该问题,并将调查此问题的修复方法。

谢谢, 艾隆

【讨论】:

您是否还会修复将 VaryByParam 设置为“无”会发出 HTTP 响应标头“Vary: *”的错误,这与应该发生的情况相反? @Eilon 我仍然认为这仍然是一个问题,您对缓存根 uri 有什么建议吗?除了重定向到 /home ;)【参考方案2】:

使用 VarByParam="" 似乎可以让它工作

【讨论】:

【参考方案3】:

根据我在 Microsoft 的联系人,如果您从站点的根目录中删除 Default.aspx 文件,问题就会完全消失,或者,如果您绝对需要它,请确保使用最新版本提供的文件ASP.NET MVC 版本。

【讨论】:

以上是关于ASP.NET MVC OutputCache 不适用于根 URI的主要内容,如果未能解决你的问题,请参考以下文章

我的 asp.net mvc Web 应用程序中的 OutputCache 设置。防止缓存的多种语法

详解Asp.Net Core 2.1+的视图缓存(响应缓存)

ASP.NET-缓存outputcache参数

ASP.NET 页面缓存OutputCache用法实例(附ab压力测试对比图)

C#工具:ASP.NET MVC生成图片验证码

过期输出缓存 ASP.Net MVC