Asp.net MVC学习日记十六(数据Cache)

本文介绍了如何在.NET框架中创建产品模型、服务类及利用缓存优化性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、新建Models/Product.cs

public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
}

2、新建Models/ProductService.cs

public class ProductService
{
public List<Product> GetProducts()
{
List<Product> result = Builder<Product>
.CreateListOfSize(100)
.Build()
.ToList();
return result;
}
}

3、Models/CacheWrapper.cs

public class CacheWrapper
{
public void PutProducts(List<Product> products)
{
Dictionary<string, object> itemsToCache = new Dictionary<string, object>();
foreach (Product product in products)
{
itemsToCache.Add(product.Name, product);
}
AddCacheItems(itemsToCache);
}
public List<Product> GetProducts(string[] productNames)
{
List<Product> results = new List<Product>();
List<object> cacheItems = GetCacheItems(productNames);
foreach (object cacheItem in cacheItems)
{
results.Add(cacheItem as Product);
}
return results.OrderBy(p => p.Name).ToList();
}

private List<object> GetCacheItems(string[] keys)
{
IDictionaryEnumerator theCache = HttpContext.Current.Cache.GetEnumerator();
List<object> results = new List<object>();
while (theCache.MoveNext())
{
if (keys.Contains(theCache.Key))
results.Add(theCache.Value);
}
return results;
}
private object GetCachItem(string key)
{
if (HttpContext.Current.Cache[key] != null)
return HttpContext.Current.Cache[key];
return null;
}
private void AddCacheItems(Dictionary<string, object> items)
{
foreach (KeyValuePair<string, object> item in items)
{
AddCacheItem(item.Key, item.Value);
}
}
private void AddCacheItem(string key, object item)
{
HttpContext.Current.Cache.Add(key, item, null, //dependencies
DateTime.MaxValue, //absolute expiration
new TimeSpan(0, 0, 2, 0), //sliding expiration
CacheItemPriority.Default, //priority
null); //callback
}
}

4、Global.asax

protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();

RegisterRoutes(RouteTable.Routes);

PreLoadProductCatalog();
}


private void PreLoadProductCatalog()
{
List<Product> products = new ProductService().GetProducts();
new CacheWrapper().PutProducts(products);
}

5、Controllers/HomeController.cs

public ActionResult CachedProducts()
{
List<Product> products = new CacheWrapper().GetProducts(new[] {"Name1", "Name5", "Name98", "Name39", "Name88", "Name34"});
return View(products);
}

6、添加CachedProducts的强类型视图,且视图内容为List

ok啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值