当前位置:  开发笔记 > 编程语言 > 正文

可以使用静态变量来缓存ASP.net中的信息吗?

如何解决《可以使用静态变量来缓存ASP.net中的信息吗?》经验,为你挑选了1个好方法。

目前我正在使用ASP.net上的C#3.5开发项目管理应用程序.为了减少对数据库的命中,我使用静态变量缓存了大量信息.例如,用户列表在静态类中保存在内存中.该类在启动时从数据库中读取所有信息,并在更改时更新数据库,但它永远不需要从数据库中读取.

该类在写入数据库的同时将更新的信息与其他Web服务器(如果存在)绑定.pinging机制是一个Windows服务,缓存对象使用随机可用端口进行注册.它也用于其他事情.

数据量并不是那么好.目前我正在使用它来缓存用户(密码哈希,权限,名称,电子邮件等).它只是保存了一堆对数据库的调用.

我想知道这种方法是否有任何陷阱和/或是否有更好的方法来缓存数据?



1> JacquesB..:

陷阱:静态字段的范围是每个应用程序域,增加的负载将使服务器在池中生成更多应用程序域.如果您只读取静态数据,这不一定是个问题,但是您将在内存中获得重复数据,并且每次创建或回收应用程序域时都会受到影响.

最好使用Cache对象 - 它适用于这样的事情.

编辑:原来我错误的AppDomains(正如评论中指出的那样) - 应用程序的更多实例将在加载时生成,但它们都将在同一个AppDomain中运行.(但你仍然应该使用Cache对象!)

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有