我应该缓存经常访问的类的实例

时间:2009-11-26 03:56:49

标签: asp.net

.net的新手并且想知道是否有保持实例的性能提升,例如DAL对象在范围内?

来自Coldfusion世界,我会实例化一个组件并将其存储在应用程序范围内,这样每次我的代码需要使用该组件时,就不必一次又一次地实现性能。

在ASP.Net应用程序中执行此操作有什么好处吗?

5 个答案:

答案 0 :(得分:3)

除非您实际上遇到性能问题,否则您不必担心这样的优化。

首先解决业务问题,并使用好的设计。只要您的数据访问代码有一个不错的抽象层,那么您可以随时在路上实施缓存解决方案如果它成为问题。

请记住, 任何 缓存解决方案都会大大增加复杂性。

答案 1 :(得分:2)

NO。在.asp的多层世界中,这将被视为“过早优化”的情况。一旦存根,脚本和程序的站点套件扩展并运行了几个月,您就可以查看日志和跟踪,以查看可能缓存,生成或重写的内容以提高性能。臭名昭着的Jeff Atwood说:“大多数网络服务器的代码优化都会有利于花在新的和改进的硬件上,而不是花费数小时调整代码”

答案 2 :(得分:1)

是的,你确实可以而且可能应该。通常情况下,存储空间位于Session;您存储了用户所需的数据。

如果它是全局性的,您可以在Application_Start事件中加载它并将其放在某处,可能是HttpCache

只是注意,有些人使用“过早优化”来避免优化;这是无稽之谈。在这种情况下缓存是合理的。

答案 3 :(得分:1)

在缓存任何对象之前进行成本效益分析非常重要,必须考虑所有因素,如

  1. 性能优势
  2. 使用频率
  3. 硬件
  4. 可扩展性
  5. 可维护性
  6. 交付时间(最重要的因素之一)
  7. 最后,缓存对象是非常有用的,这些对象的创建成本非常高,或者您经常使用,即表的数据(来自数据库)或xml数据

答案 4 :(得分:0)

你考虑这个课程的课程是否有州?如果没有,(和DAL类通常没有状态,或者不需要状态),那么你应该使它的方法是静态的,然后你根本不需要实例化它。如果它拥有的唯一状态是连接字符串,您还可以将该属性字段设置为静态属性字段,并避免以这种方式实例化它的要求。

否则,请查看名为Flyweight

的设计模式