<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Hopes

    Start Here..

     

    Cookie/session/viewstate/cache



    1.COOKIE


    這個保存在客戶端的信息,用戶清除了本機上的COOKIE文件或過期了就沒有了。保存在客戶端,通過 Expries 設置有效期(可長可短,默認關閉瀏覽器cookie即失效)。
    新建項并賦值:
           Response.Cookies["ckName"].Value = "Sutdent";

           Response.Cookies["ckName"].Expires = DateTime.Now.AddSeconds(10);

            // 如果不設置過期時間,默認關閉瀏覽器該cookie即失效

    新建項,為不同子鍵賦值
          Response.Cookies["ckAge"]["boy"] = "25";
          Response.Cookies["ckAge"]["girl"] = "22";
          Response.Cookies["ckAge"].Expires = DateTime.Now.AddHours(1);
          // Response.Cookies["ckAge"].Expires = DateTime.Now.AddHours(-1); // 通過設置過期時間來清除cookie


    2.CACHE


        應用程序級變量,存于服務器緩存中被所有用戶共享,由系統自動分配和回收,使用Cache["name"]==null?判斷是否過期。
        Cache["number"] = "65464646";
        Cache["ca"] = "aaa";
        Cache["cb"] = "bbb";

        lbNumber.Text +="OldCache value:"+ Cache["number"].ToString();


    清空緩存:

    IDictionaryEnumerator ide = Cache.GetEnumerator();
    while (ide.MoveNext())
    {
    Cache.Remove(ide.Key.ToString());
    }
    lbNumber.Text 
    += "點擊清空后的cache數量:" + Cache.Count;

       在客戶端是無法清空和刷新的,如果要的話可能要修改WEB.CONFIG和IIS的重啟,或者提供頁面方法,觸發清楚

    3.SESSION


    頁面級變量,保存在服務器端,通過 Timeout 設置超時時間(可長可短,默認30分鐘)。
    系統為每位訪問者自動分配一個 sessionid(超時重新分配),使之互不影響,生命周期與訪問者會話時間相同。
    Session["scName"] = string.IsNullOrEmpty(scName.Value)?"default session string":scName.Value;
    Session.Timeout = 11; // 時間單位是分鐘
    lbSession.Text = Session["scName"].ToString();

    通過項名稱刪除 session
    Session.Remove("scName"); // 刪除單條session
    Session.Clear(); // 清空session
    lbSession.Text = "session is clesred, please refreash.";

    session的工作原理 
    一直在使用session存儲數據,一直沒有好好總結一下session的使用方式以及其工作原理,今天在這里做一下梳理。
    這里的介紹主要是基于php語言,其他的語言操作可能會有差別,但基本的原理不變。

    1.在php中如何操作session:

    session_start(); //使用該函數打開session功能

    $_SESSION  //使用預定義全局變量操作數據

    使用unset($_SESSION['key']) //銷毀一個session的值

    簡單地操作,一切都是由服務器實現;由于處理在后臺,一切看起來也很安全。但是session采用什么樣機制,又是怎樣被實現,并且如何來保持會話的狀態的呢?



    2.session實現與工作原理

    瀏覽器和服務器采用http無狀態的通訊,為了保持客戶端的狀態,使用session來達到這個目的。然而服務端是怎么樣標示不同的客戶端或用戶呢?
    這里我們可以使用生活中的一個例子,假如你參加一個晚會,認識了很多人,你會采取什么方式來區分不同的人呢!你可能根據臉型,也有可能根據用戶的名字,
    或者人的身份證,即采用一個獨一無二的標示。在session機制中,也采用了這樣的一個唯一的session_id來標示不同的用戶,不同的是:瀏覽器每次請求都會帶上
    由服務器為它生成的session_id.

    簡單介紹一下流程:當客戶端訪問服務器時,服務器根據需求設置session,將會話信息保存在服務器上,同時將標示session的session_id傳遞給客戶端瀏覽器,
    瀏覽器將這個session_id保存在內存中(還有其他的存儲方式,例如寫在url中),我們稱之為無過期時間的cookie。瀏覽器關閉后,這個cookie就清掉了,它不會存在用戶的cookie臨時文件。
    以后瀏覽器每次請求都會額外加上這個參數值,再服務器根據這個session_id,就能取得客戶端的數據狀態。

    如果客戶端瀏覽器意外關閉,服務器保存的session數據不是立即釋放,此時數據還會存在,只要我們知道那個session_id,就可以繼續通過請求獲得此session的信息;但是這個時候后臺的session還存在,但是session的保存有一個過期
    時間,一旦超過規定時間沒有客戶端請求時,他就會清除這個session。

    下面介紹一下session的存儲機制,默認的session是保存在files中,即以文件的方式保存session數據。在php中主要根據php.ini的配置session.save_handler
    來選擇保存session的方式。

    這里順便說明一下,如果要做服務器的lvs,即多臺server的話,我們一般使用memcached的方式session,否則會導致一些請求找不到session。
    一個簡單的memcache配置:
    session.save_handler = memcache
    session.save_path = "tcp://10.28.41.84:10001"

    當然如果一定要使用files文件緩存,我們可以將文件作nfs,將所有的保存session文件定位到一個地方。

    剛才講返回給用戶的session-id最終保存在內存中,這里我們也可以設置參數將其保存在用戶的url中。



    3.實例問題
    現有系統A,B; 假設A系統是可以獨立運行的web系統,即可以和瀏覽器直接處理session, B系統是基于mobile的,需要調用A系統的功能接口,
    在保持A不改變的情況下,即登陸驗證,session存儲都不變的情況下,B系統能處理前端用戶的請求。

    這里提供的方案是使用PHP實現

    在用戶登陸成功后,將保存的session的session-id返回給B系統,然后B系統每次請求其他接口都帶session_id。
    A系統在session_start前加上session_id(session_id);

    這樣B系統就能安全的調用A

    因為他的文件有一些還是保存在客戶端的,所以清楚客戶端最近歷史記錄文件,有時也會造成SEESSION失效

    4.VIEWSTATE

    頁面級變量(可以看作頁面Session),可保存各種變量。保存變量到 ViewState
             ViewState["number"]=123456;

             ViewState["table"]=DataTable;

          // 存放DataTable、Hashtable…對象讀取 ViewState

    times=(int)ViewState["number"];
    table=(DataTable)ViewState["table"];

    posted on 2012-09-09 12:17 ** 閱讀(219) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    你好!

    常用鏈接

    留言簿(2)

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    收藏夾

    C#學習

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲一级免费视频| 免费无码A片一区二三区| 亚洲色偷偷综合亚洲AVYP| 十八禁的黄污污免费网站| 亚洲男人的天堂一区二区| 国产99久久久国产精免费| 国产日韩亚洲大尺度高清| 无码少妇精品一区二区免费动态| 亚洲一本综合久久| 美女被免费喷白浆视频| 亚洲日韩国产AV无码无码精品| 日本免费无遮挡吸乳视频电影| 男女男精品网站免费观看| 亚洲人成中文字幕在线观看| 无码AV片在线观看免费| 国产精品亚洲片夜色在线| 国产成人3p视频免费观看 | 美女在线视频观看影院免费天天看| 久久精品7亚洲午夜a| 91高清免费国产自产| 亚洲精品宾馆在线精品酒店 | 免费大片av手机看片| 亚洲午夜国产精品无码| 免费观看黄色的网站| 久久久久亚洲国产AV麻豆| 久久亚洲中文字幕精品一区| 久久免费国产视频| 亚洲欧美成aⅴ人在线观看| 亚洲综合精品香蕉久久网| 亚洲三级高清免费| 一级毛片不卡免费看老司机| 亚洲黄色在线观看网站| 免费国产在线观看不卡| 91精品免费观看| 黄网站色视频免费看无下截| 777亚洲精品乱码久久久久久 | 99久久精品国产亚洲| 免费女人18毛片a级毛片视频| 免费人成黄页在线观看日本| 久久亚洲AV成人无码国产最大| 亚洲AV无码1区2区久久|