【问题标题】:is application state = system.web.httpcontent.cache?是应用程序状态 = system.web.httpcontent.cache?
【发布时间】:2010-06-05 04:54:11
【问题描述】:

应用程序状态 (http://msdn.microsoft.com/en-us/library/ms178594.aspx) 是否与使用 System.Web.Caching API 相同?

System.web.httpcontent.current.cache[somekey] ?

【问题讨论】:

    标签: c# asp.net caching


    【解决方案1】:

    答案在您自己的链接中。阅读它。

    但是,在应用程序状态下存储大块数据可能会填满服务器内存,导致服务器将内存分页到磁盘。作为使用应用程序状态的替代方法,您可以使用 ASP.NET 缓存机制来存储大量应用程序数据。 ASP.NET 缓存还将数据存储在内存中,因此速度非常快;但是,ASP.NET 会主动管理缓存,并在内存不足时删除项目。

    【讨论】:

      【解决方案2】:

      不,它们不一样。

      ASP.Net Cache 对象专门针对缓存内容或对象进行了优化,这些内容或对象的寿命很短,或者可以在定义的时间内存活。如果需要释放资源,它将被垃圾收集器蚕食,并且永远无法保证您放入缓存中的内容在您下次查看时会在那里。

      System.Application 是一个全局键值集合,可用于以线程安全的方式为所有用户存储全局信息(只要您安全地使用它)。但是,除非您明确删除它,否则不会从 System.Application 中删除任何内容。

      【讨论】:

        【解决方案3】:

        您可能指的是System.Web.Context,而不是content,而且CacheHttpApplicationState 不同。

        应用程序状态用于在应用程序的生命周期内保持相当静态的项目(除非明确删除)。从您链接的页面中可以看出,建议使用Application

        存储少量经常使用的数据,不会从一个用户更改为另一个用户。

        缓存在本质上更加短暂,应该用于生命周期短得多(几秒到几分钟)的内容,并且项目的删除是自动管理的(取决于配置)。

        【讨论】:

          【解决方案4】:

          不一样。

          如果数据

          • 在应用程序的生命周期内稳定
          • 必须始终可用且不得清除

          你会使用 HttpApplicationState

          如果数据

          • 在应用程序的生命周期中不一定需要
          • 变化频繁
          • 可以根据需要清除(例如系统内存不足)
          • 如果很少使用可以丢弃
          • 在某些条件下应该失效/刷新(依赖规则:时间跨度、日期、文件时间戳……)

          然后使用缓存

          其他重要区别:

          • 大量数据最好存储在缓存中,如果内存不足,服务器可以将其清除。
          • 缓存对于多线程操作是安全的。 Page.Application 需要锁定

          有关更多详细信息,另请参阅etutorials.org 上的这篇文章。

          还有这个问题: ASP.NET Page.Cache versus Page.Application storage for data synchronization?

          【讨论】:

            【解决方案5】:

            其实我会说应用状态的主要目的是向后兼容经典的 ASP 应用程序,我永远不会在新的 ASP.NET 应用程序中使用它。

            正如其他受访者所说,缓存是主动管理的,因此如果内存不足,数据将被丢弃。

            应用程序状态本质上等同于静态哈希表,具有继承自经典 ASP 的锁定语义。

            如果您需要存储静态数据,最好将其存储为类的强类型静态字段,而不是使用应用程序状态。如果需要锁定,请使用 .NET 的标准同步机制。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2021-11-08
              • 2015-10-30
              • 1970-01-01
              • 1970-01-01
              • 2019-06-30
              • 2011-09-26
              • 2011-05-07
              相关资源
              最近更新 更多