[C#]

摘要:[C#]-WebForm-ViewState,Session,Cookies,Application比较


作者整理的很详细

参考: http://www.dotblogs.com.tw/hatelove/archive/2009/06/28/viewstate-session-cache-cookies-application-of-user-state.aspx

  1. ViewState
    • 只存在于正在执行那一页,通常用于postback记值(因为http无状态)。
    • 原理是HTML上的hidden field,会透过Base-64编码
    • webconfig里可以透过设定来加密:
    • 通常server control会透过viewstate来保存其属性值,也是传统ASP.NET web form重整页面最容易碰到的效率问题。可透过EnableViewState属性开关。
    • 可存放可序列化的Object (一般程序用到普遍最大的应该也只是hash table吧 )
  2. Session
    • 可存在于该连线,不同页面,通常用来跨多页传些比较重要、需要安全的值。如果是前后页面关连性的值,只需要用URL parameter即可。Session的意义比较像是在什么样的情况下,开始或变更了某个Session的值。
    • 类似跨网页的全域变量
    • 占用Server端内存,连线数量一暴增,内存很可能被操挂。
    • 默认存在内存里,可以改存在Session State Server或DB。(如果放在Session State Server或者DB,存放的对象也必须是可序列化的)
    • 可设定存活时间,但发生错误或特定情况时,会导致Session遗失,请参考:[ASP.NET]Session遗失的几种可能
  3. Cookies
    • 单一使用者,存在client端,读的到就活着。
    • 需注意安全性考量,通常用在个人化portal或profile。
    • 有些single sign on会透过cookie(加密)来存放账号资讯。
    • String格式存放。
  4. Application
    • 在Server上所有User存取同一份。
    • 当Web application重起或关闭时结束。
    • 吃Server内存。
  5. Cache
    • 吃Server内存。
    • 可设定时间、hit rate或先进先出来当作条件。
    • 通常应用在静态网页缓存。