我有一个带有两层缓存的网上商店。一个是Web服务,一个是我的Web项目。问题是,当我想要重新安装时,由于价格变化或添加新产品,网站崩溃并达到了请求限制。
在Web服务中,我从HttpRuntimeCache
中取出了所有缓存条目,然后重新运行其中的所有方法。 (我已经三次检查它们都是成功的。)
当它们运行时,我仍保留原始缓存,新的缓存变为_temp_cachekey
,当所有内容完成时,我会覆盖旧数据,如下所示:
foreach (string key in Cache)
{
var value = HttpRuntime.Cache[key];
if (value != null)
{
HttpRuntime.Cache.Insert(
key.Replace("_temp_", ""), value, null,
System.Web.Caching.Cache.NoAbsoluteExpiration,
System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.NotRemovable, null
);
}
}
在此之后我杀死网站上的所有缓存键,如下所示:
List<string> toRemove = new List<string>();
foreach (System.Collections.DictionaryEntry cacheItem in HttpRuntime.Cache)
{
toRemove.Add(cacheItem.Key.ToString());
}
foreach (string key in toRemove)
{
if (!key.Contains("MyPagesIndex"))
{
HttpRuntime.Cache.Remove(key);
}
}
有没有人知道如何克服这个问题?我错过了什么吗?有没有更好的方法来重建运行时缓存?
注意:如果我的网站有访问者&lt; 100那么它工作正常,如果超过,服务器cpu仍然是最高10-20%