当前位置:编程学习 > C#/ASP.NET >>

请教高手:如何计算ASP.NET 对象缓存所占用内存空间?(EF+MVC项目)

各位好:

   我在做一个网站(Entity Framework + ObjectQuery + MVC 2.0Beta),网站的一些常用的设置我统一放到一个表里头,并缓存相应的Entity Collection,有需要时在从里面获取:

1、SiteSetting Table 有SettingCategory “学历”跟“地区”
2、缓存里面放了IList<SiteSetting>
3、另有一个Helper类读取IList<SiteSetting>到NameValueCollection 如 ,“学历NameValueCollection”和“地区NameValueCollection”
4、在不同的页面种通过NameValueCollection.get(Name)读取具体的设置项目
5、当任何SiteSettingItem有变时清除缓存里的Ilist<SiteSetting>

    这个IList<SiteSetting>的Count可能会有1000多,SiteSetting表成员只有ID、Category、Name、Value跟Description(nvarchar(500)),现在的问题是不知道只缓存IList<SiteSetting>好还是分开缓存每个NameValueCollection,因为不知道其所占用的缓存空间有多大。

请问如如何计算缓存占用空间?我这种做法是否合理?是否有更好的做法能实现呢? 非常感谢!
--------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- http://www.cnblogs.com/chenxizhang/archive/2009/07/28/1532770.html --------------------编程问答-------------------- /// <summary>
/// 创建100个缓存项目
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
    for (int i = 0; i < 100; i++)
    {
        Cache["cache_" + i.ToString()] = i * 100000;
    }
}
/// <summary>
/// 读取100个缓存项目
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button2_Click(object sender, EventArgs e)
{
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 100; i++)
    {
        sb.Append(Cache["cache_" + i.ToString()].ToString());
    }

    Response.Write(sb.ToString());
}

/// <summary>
/// 随机读取10个缓存项目
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button3_Click(object sender, EventArgs e)
{
    StringBuilder sb = new StringBuilder();
    Random rnd = new Random();
    for (int i = 0; i < 10; i++)
    {
        sb.Append(Cache["cache_" + rnd.Next(99).ToString()].ToString());
    }

    Response.Write(sb.ToString());
} --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- ... --------------------编程问答-------------------- 对不起,我需要的是如何计算缓存空间,不是存取时间,谢谢!

引用 3 楼 zzxap 的回复:
/// <summary>
/// 创建100个缓存项目
/// </summary>
/// <param name="sender"> </param>
/// <param name="e"> </param>
protected void Button1_Click(object sender, EventArgs e)
{
    for (int i = 0; i < 100; i++)
    {
        Cache["cache_" + i.ToString()] = i * 100000;
    }
}
/// <summary>
/// 读取100个缓存项目
/// </summary>
/// <param name="sender"> </param>
/// <param name="e"> </param>
protected void Button2_Click(object sender, EventArgs e)
{
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 100; i++)
    {
        sb.Append(Cache["cache_" + i.ToString()].ToString());
    }

    Response.Write(sb.ToString());
}

/// <summary>
/// 随机读取10个缓存项目
/// </summary>
/// <param name="sender"> </param>
/// <param name="e"> </param>
protected void Button3_Click(object sender, EventArgs e)
{
    StringBuilder sb = new StringBuilder();
    Random rnd = new Random();
    for (int i = 0; i < 10; i++)
    {
        sb.Append(Cache["cache_" + rnd.Next(99).ToString()].ToString());
    }

    Response.Write(sb.ToString());
}
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,