ASP清除Application緩存的問題
Asp中的 Application 是一個公用的對像
我們可以用一個語句來清理服務(wù)器上的所有Application 對像
application.contents.removeall '清空所有緩存
會員登陸后修改application變量,比如我們用一個application("login")=true表示登陸了.那么登陸時就應(yīng)該先進行一次的application("login")=ture
直到其退出后才會將其值修改為false.
當(dāng)然登陸前先檢查一下application("login")的值,若不存在或是false就可以讓其進行登陸,否則做出限制跟轉(zhuǎn)至錯誤提示頁面.
而session只是一個單用戶的級別,不合適用的.而session變量是其他用戶根本取不到的.
剩下要考慮的是非正常退出等,如果user1直接關(guān)閉的瀏覽器,那么沒有退出時進行修改application("login")的值,這時會發(fā)生所有用戶都登陸不上的問題.這里要用到session_OnEnd事件進行一次的清除變量,這里面顯然要加上application("login")=false或null這樣的修改.但是還要把session.tiomeout時間設(shè)短一點,要不如果某用戶關(guān)閉后要等很長的時間后才可能登陸的.但是過短又不行,如果太短的話,你的這個用戶連一個填寫表單完成的機會都沒有,那么user2會搶先登陸進去的.顯然,這里最好的辦法就是增加一個提醒機制進行計時,比如我設(shè)的是十分鐘,在登陸者的頁面上會出現(xiàn)計時的,倒計至9分鐘左右讓其點一個按鈕與服務(wù)器交互一下,這樣計時器重新從十分鐘開始計時.或者寫一個小的自動請求服務(wù)的ajax,讓其每隔1分鐘向服務(wù)器發(fā)一次請求,這樣時間你可以設(shè)置為略大于1分鐘而保證在線者的不掉線,別人不能搶入,而其關(guān)閉后,顯然1分鐘后允許別人登陸.
過期頁面的處理,如果一個用戶在session時間內(nèi)無任何服務(wù)器動作的話,可由別的登陸用戶進行搶入,這時,也就是十分鐘后,該頁面進行了刷新操作,此時必須把這個用戶進行一個過期處理.不能讓其再進入,如果不加過期處理,此時會發(fā)生兩個人同時在線的情況.
搶登陸,假定兩地都有用戶在同時搶登陸時,如果進行處理.user1登陸時發(fā)現(xiàn)application("login")的值是可以登陸的.于是就正在填寫,而user2此時也在讀取application的值,發(fā)現(xiàn)可以登陸,那么兩者會同時登陸上的.解決的辦法是:
1,頁面進行取值的方法,也就是說當(dāng)有人請求login頁面時就先進行application值的更改.其他用戶再請求時已經(jīng)不能請求到頁面了.或請求到了不允話登陸的頁面信息.但如果是這樣的話,不管登陸沒有登陸都是要清除的,所以session_OnEnd事件中不管是否登陸都要進行application的靖除的.
2.鎖定變量的方法,application變量是可以鎖定的,進入頁面時先將application進行鎖定,而其他用戶是取不到值的.取不到值時就好辦了,提示有用戶正在嘗試登陸.當(dāng)然無論那個嘗試登陸的是否登陸都要對其進行解鎖的.也就是說在關(guān)閉頁面中,最好是這樣,寫一個ajax進行application進行解除鎖定.當(dāng)然登陸完成時也要進行解鎖定.最后是如果意外時,session_OnEnd也要進行嘗試解鎖定,如果變量正在鎖定,則解鎖定就是嘗試解鎖定的意思.
當(dāng)然,數(shù)據(jù)庫法也可以用的,數(shù)據(jù)庫中有一個字段進行標(biāo)志,但這樣的解決方法只是將使用application變量,換成了使用字段而已.其他都是一樣的.但速度上與安全上依賴于application變量比較好的.
一樓,session變量是一個用戶級變量,請問另一個用戶在登陸時如果得到其他用戶的變量?這樣不亂套了嗎?別忘記一句話:每一個用戶在請求頁面時都自動生成一個session的.而application則是全局變量,網(wǎng)頁的即時聊天就是來源于這個變量的.但變量過大時會占用服務(wù)器較大的內(nèi)存的!
二樓,就是一個統(tǒng)計在線用戶的程序,請問,考慮到兩個用戶在同時嘗試登陸的情況嗎?這種方法可以是登陸上,但必須加代碼再測試一下是否有同時在線用戶,如果有,必須讓其當(dāng)即退出登陸才行的,這樣才能做到單用戶登陸.
不過一個用戶登陸的網(wǎng)站你干什么用呢?如果是單單限制登陸用戶不能進入login界面的話,可以使用session值,在登陸界面中進行一次的簡單判斷嘛.那樣的話又非常簡單,比如登陸用戶登陸后會有session("username"),在登陸頁面上去查這個查是否為空或是否存在,若為空或存在則正常登陸,否則轉(zhuǎn)向錯誤頁面不就行了?
關(guān)鍵詞:ASP
閱讀本文后您有什么感想? 已有 人給出評價!
- 0
- 11
- 11
- 2
- 2
- 15