我有一个使用内存对象缓存的MVC 3站点。
当网站第一次被点击时,构建缓存需要大约一分钟,一旦为每个人建立了它的速度非常快。
当我开发时,我不得不减少缓存对象的数量,因为每次我重新填充我的项目时它会丢弃缓存并且必须重建它。
有没有办法可以设置Visual Studio,以便在重新填充时保持内存缓存?
这是我用于缓存的一些代码....
/// <summary>
/// Method to get all the prices
/// </summary>
public static List<DB2011_PriceRange> AllPrices
{
get
{
lock(_PriceLock)
{
if (HttpRuntime.Cache["Prices"] != null)
{
return (List<DB2011_PriceRange>)HttpRuntime.Cache["Prices"];
}
else
{
PopulatePrices();
return (List<DB2011_PriceRange>)HttpRuntime.Cache["Prices"];
}
}
}
}
/// <summary>
/// Poplate the Cache containing the prices
/// </summary>
private static void PopulatePrices()
{
// clear the cache and the list object
ClearCacheAndList("Trims", ref ListAllPrices);
using(var DB = DataContext.Get_DataContext)
{
ListAllPrices = (from p in DB.DB2011_PriceRange
select p).ToList();
}
// add the list object to the Cache
HttpRuntime.Cache.Add("Prices", ListAllPrices, null, DateTime.Now.AddHours(24), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
}
任何帮助总是适用的
Truegilly
答案 0 :(得分:2)
重新编译您的应用程序会导致托管它的AppDomain重新启动,这就是处理缓存的原因。你可以:
答案 1 :(得分:0)
我不相信。发布新DLL时,将创建运行该应用程序的新进程。由于您使用的是内存缓存,因此将删除所有对象。
您可以使用一种特殊方法“加热缓存”,这种方法会在您发布新代码时预先填充它们。