我有一个ASP.NET Webforms应用程序。为了获得更好的性能,我以编程方式在主页的页面加载中设置Outputcache:
protected void Page_Load(object sender, EventArgs e)
{
// [...] do stuff [...]
if (!Page.IsPostBack)
{
Response.Cache.SetCacheability(HttpCacheability.Server);
Response.Cache.SetValidUntilExpires(true); // ignore Cache-Control Header from Request
Response.Cache.SetSlidingExpiration(false);
Response.Cache.VaryByParams["*"] = true;
Response.Cache.SetExpires(somedateinthefuture); // plus 5 Days from now
Response.AddFileDependency(pathtoafile); // a file which will be overwritten when cache should be fully cleared (this works)
}
}
因此,对于每个唯一的Url,HTML都会被缓存。这很好用。
问题:
我检查了什么:
什么可能导致删除单个缓存项。也许Bots?但是不应该通过SetValidUntilExpires(true)阻止这种情况吗?
答案 0 :(得分:1)
原因是IIS7-Application中的设置。当应用程序池的大小超过400兆字节时,它会自行回收或删除单个缓存条目。