在asp.net中,主要的数据存储是应用程序,会话,我们还有对象缓存.
我使用了常识提示/提示(例如,从不将用户特定数据放在应用程序中,永远不会将非托管资源放在会话中等等),但说实话,我从来没有遇到任何建议和示例,何时使用MSDN中的内容或来自Haack和Gu等知名人物一起报道所有三个(例如谷歌首次访问MSDN谈论使用应用程序作为全局缓存,如果是这样的话,那么对象缓存是什么?
我发现很少讨论的东西是场景中的比较,例如我知道在过度使用会话时很容易不必要地加载内存使用,但是如果你使用对象缓存作为存储相同数据的替代方案会发生什么呢?
编辑:这是我到目前为止找到的最好的信息:http://msdn.microsoft.com/en-us/library/ff647787.aspx
最佳答案 使用Session来存储特定于用户的信息,因为框架会自动将每个会话存储与特定用户相关联.
使用对象缓存可以缓存一次并在整个应用程序中或在一组用户中重复使用的信息.如果您将特定于用户的数据存储在对象缓存中,那么您将不得不发明一些机制来关联缓存条目.这不仅需要代表您进行额外的工作,而且您可能会以这样的方式进行,以增加恶意用户以某种方式做类似于会话欺骗的可能性.
我不知道你什么时候需要使用Application对象.如果我没有弄错的话,Application对象更像是来自经典ASP的遗物而不是其他东西.
另一种形式的缓存同样重要的是通过HttpContext.Items集合进行每请求缓存.这允许您在请求的生命周期内缓存数据,如果您在单个请求期间(例如从页面上的不同用户控件)继续请求相同的数据,这将非常有用.有关此方法的更多信息,请参阅HttpContext.Items – a Per-Request Cache Store.