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

mrwsr 2009-12-04 03:13:15
各位好:

我在做一个网站(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,因为不知道其所占用的缓存空间有多大。

请问如如何计算缓存占用空间?我这种做法是否合理?是否有更好的做法能实现呢? 非常感谢!
...全文
159 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrwsr 2009-12-04
  • 打赏
  • 举报
回复
对不起,我需要的是如何计算缓存空间,不是存取时间,谢谢!

[Quote=引用 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());
}
[/Quote]
gongsun 2009-12-04
  • 打赏
  • 举报
回复
...
tzs2304 2009-12-04
  • 打赏
  • 举报
回复
帮顶
zzxap 2009-12-04
  • 打赏
  • 举报
回复
/// <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());
}
zzxap 2009-12-04
  • 打赏
  • 举报
回复
http://www.cnblogs.com/chenxizhang/archive/2009/07/28/1532770.html
云水千寻 2009-12-04
  • 打赏
  • 举报
回复
帮顶
包括源代码、数据库文档、数据库创建SQL脚本。一套基于ASP.NET MVC+EF6+Bootstrap开发出来的框架源代码! 采用主流框架,容易上手,简单易学,学习成本低。可完全实现二次开发、基本满足80%项目需求。 可以帮助解决.NET项目70%的重复工作,让开发更多关注业务逻辑。既能快速提高开发效率,帮助公司节省人力成本,同时又不失灵活性。 支持SQLServer、MySQL、Oracle、SQLite、Access 等多数据库类型。模块化设计,层次结构清晰。内置一系列企业信息管理的基础功能。 操作权限控制精密细致,对所有管理链接都进行权限验证,可控制到导航菜单、功能按钮。 数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段 兼容目前最流行浏览器(IE8+、Chrome、Firefox、360浏览器) 1、前端技术 JS框架:Bootstrap、JQuery CSS框架:Bootstrap v3.3.4(稳定是后台,UI方面根据需求自己升级改造吧)。 客户端验证:jQuery Validation Plugin。 在线编辑器:ckeditor、simditor 上传文件:Uploadify 数据表格:jqGrid、Bootstrap Talbe 对话框:layer 页面布局:jquery.layout.js 图表插件:echarts、highcharts 2、后端技术 核心框架:ASP.NET MVC5、WEB API 持久层框架:EntityFramework 定时计划任务:Quartz.Net组件 安全支持:过滤器、Sql注入、请求伪造 服务端验证:实体模型验证、自己封装Validator 缓存框架:微软自带Cache、Redis 日志管理:Log4net、登录日志、操作日志 工具类:NPOI、Newtonsoft.Json、验证码

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧