如何在建立缓存之前停止对网站的请求

时间:2014-02-25 20:59:12

标签: asp.net caching iis-7

我在网站上工作,它将重要数据存储在HTTPContext.Cache中以获得快速性能。如果在白天时间内更改了任何数据。我们有自动化流程来清除和重新生成缓存。但问题是当生成缓存时,任何试图访问该网站的用户都会收到错误。

我正在寻找这个问题的解决方案。我可以停止对网站的请求,直到缓存生成没有完成。

一种是放置app_offline文件,并在完全刷新缓存时删除它。

如果您需要更多信息,请告诉我

1 个答案:

答案 0 :(得分:1)

您可以使用global.asax并执行类似

的操作
protected void Application_BeginRequest(Object sender, EventArgs e)
{
   if(fCacheIsNotReady)
   {
        HttpContext.Current.Response.TrySkipIisCustomErrors = true;
        HttpContext.Current.Response.Write("We not build our site, please try again in few seconds.");
        HttpContext.Current.Response.StatusCode = 403;
        HttpContext.Current.Response.End();
        return ;    
   }    
}

fCacheIsNotReady可以是全局静态参数,当你开始构建缓存时为true,当你结束时为false, 您还可以查看要停止的文件。

我不知道你是如何创建缓存的,你也可以使用一些lock()来保留用户,直到缓存完成。