在高负载下调用页面和Web服务

时间:2017-07-28 11:10:14

标签: c# web-services caching

我有一个带有两层缓存的网上商店。一个是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%

0 个答案:

没有答案