gpt4 book ai didi

asp.net-mvc - 如何在 MVC 应用程序中缓存数据

转载 作者:太空狗 更新时间:2023-10-30 01:36:44 25 4
gpt4 key购买 nike

我已经阅读了很多关于 MVC 应用程序中的页面缓存和部分页面缓存的信息。但是,我想知道您将如何缓存数据。

在我的场景中,我将使用 LINQ to Entities( Entity Framework )。在第一次调用 GetNames(或任何方法)时,我想从数据库中获取数据。我想将结果保存在缓存中,并在第二次调用时使用缓存版本(如果存在)。

任何人都可以举例说明这将如何工作、应该在哪里实现(模型?)以及它是否可行。

我在传统的 ASP.NET 应用程序中看到过这种情况,通常用于非常静态的数据。

最佳答案

这是我使用的一个很好且简单的缓存助手类/服务:

using System.Runtime.Caching;  

public class InMemoryCache: ICacheService
{
public T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class
{
T item = MemoryCache.Default.Get(cacheKey) as T;
if (item == null)
{
item = getItemCallback();
MemoryCache.Default.Add(cacheKey, item, DateTime.Now.AddMinutes(10));
}
return item;
}
}

interface ICacheService
{
T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class;
}

用法:

cacheProvider.GetOrSet("cache key", (delegate method if cache is empty));

缓存提供者会检查缓存中是否有名为“cache id”的东西,如果没有,它会调用一个委托(delegate)方法来获取数据并将其存储在缓存中。

示例:

var products=cacheService.GetOrSet("catalog.products", ()=>productRepository.GetAll())

关于asp.net-mvc - 如何在 MVC 应用程序中缓存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/343899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com