我们使用的是Windows Server 2008 R2 Enterprise和IIS7.5.7600.16385,我在服务器上部署了一个简单的Web应用(ASP.NET MVC,C#,.NET Framework 4.5.1)。以下是控制器代码,*.cshtml只输出日期时间:
当我第一次请求URL http://localhost:80/Detail/Index?id=3 时,响应是正确的。
但是,当我再次请求URL(Ctrl+F5)时,max-age不正确(此时响应来自服务器缓存):
我不知道为什么最大年龄(max-age)这么大,以及它是如何生成的。当输出缓存过期时(Ctrl + F5),它将重新转换。在我的生产环境中,错误的最大年龄会导致 URL 链接点击从浏览器的磁盘缓存中读取内容。
public class DetailController : Controller
{
[OutputCache(Duration = 300, VaryByParam = "id")]
public ActionResult Index(int id)
{
return View();
}
}
当我第一次请求URL http://localhost:80/Detail/Index?id=3 时,响应是正确的。
Cache-Control:public, max-age=300
Date:Mon, 24 Oct 2016 12:11:59 GMT
Expires:Mon, 24 Oct 2016 12:16:51 GMT
Last-Modified:Mon, 24 Oct 2016 12:11:51 GMT
但是,当我再次请求URL(Ctrl+F5)时,max-age不正确(此时响应来自服务器缓存):
Cache-Control:public, max-age=63612908450
Date:Mon, 24 Oct 2016 12:16:34 GMT
Expires:Mon, 24 Oct 2016 12:20:50 GMT
Last-Modified:Mon, 24 Oct 2016 12:15:50 GMT
我不知道为什么最大年龄(max-age)这么大,以及它是如何生成的。当输出缓存过期时(Ctrl + F5),它将重新转换。在我的生产环境中,错误的最大年龄会导致 URL 链接点击从浏览器的磁盘缓存中读取内容。
任何人知道如何解决这个问题吗?