C#(ASP.NET) 中的缓存

本文关键字:缓存 NET ASP | 更新日期: 2023-09-27 18:35:45

我正在尝试在我的程序中实现缓存。我有一个 Web 应用程序,为用户提供对某些学习课程的访问权限。当用户登录时,我会从我们的数据库中对他进行身份验证。现在,如果从列表中访问其他课程,我不想回到数据库。相反,我想将值存储在缓存中,例如 20 分钟。该程序应1) 对用户进行身份验证,并允许他访问课程。如果他改变课程,程序应该在缓存中查找。如果用户 ID 存在,则允许他访问课程,而无需返回服务器。2)提供一种机制,如果用户在20分钟后仍在系统上,则自动更新 time.so,该用户不会注销。我尝试过这样的事情

Cache ch = new Cache();
ch.Add("key","value);

但我在第二个语句中得到空引用异常。我以前从未使用过缓存,因此将不胜感激任何指针。

C#(ASP.NET) 中的缓存

好吧,这就是我使用它的方式:

/// <summary>
/// Get Data
/// </summary>
/// <returns>data</returns>
public static ElementOut GetData()
{
    //function return value
    ElementOut functionReturnValue = new ElementOut();
    try
    {
        string key = "data";
        if (HttpRuntime.Cache[key] == null)
        {
            //fetch data
            var data = CreateBLLAdapter().GetData();
            //validate data
            if (data == null) throw new Exception("data is empty!");
            //set cache to 12 hours
            DateTime timeToExpire = DateTime.Now.AddHours(12);
            //set cache
            HttpRuntime.Cache.Insert(key, data, null, timeToExpire, Cache.NoSlidingExpiration);
        }
        //set return from cache
        functionReturnValue = (ElementOut)HttpRuntime.Cache[key];
    }
    catch (Exception ex)
    {
        //Log.WriteServerErrorLog(ex);
    }
    return functionReturnValue;
}

使用当前 HTTP 上下文的Cache

HttpContext.Current.Cache

描述:当新的 HTTP 请求到来时,应用程序会在通常称为请求处理管道的管道中处理该请求,也就是说,它会在将请求提供给处理程序进行处理之前,逐个对请求执行一些操作。

ASP.NET 执行的操作之一是根据某些参数加载会话和缓存数据。

HttpContext.Current.Cache是加载的缓存,您可以使用它。然后,当您在该缓存中存储某些内容时,ASP.NET 再次负责存储该缓存并将其保存在下一个 HTTP 请求中。

您还可以使用页面的属性访问该全局对象Cache

如果您在 ASP.NET 中开发,您可以简单地使用会话存储 ASP.NET 该存储,该存储每个用户的值,只要他的会话持续(默认情况下,距离他上次操作 20 分钟)

您可以尝试输出缓存。

有关更多详细信息,请参阅下面的链接。http://msdn.microsoft.com/en-us/library/ms178597.aspx