2012-06-04 156 views
3

我試圖用緩存功能來實現一個Web應用程序。我需要緩存的原因是我們有一個讓用戶訪問在線課程的應用程序。現在,一旦用戶登錄,我會根據我們的數據庫驗證他。一旦驗證,我想將用戶ID和課程ID存儲在緩存中20分鐘,以便如果他再次請求它,我可以從緩存對象中檢索值,包括用戶ID和課程ID,如果有效,則允許他訪問 由於某些原因,在這個應用程序中使用會話變量,所以它們不是一個選項。HttpRuntime.Cache在哪裏存儲數據?

現在,我的應用程序中的高速緩存代碼位於HTTP處理程序(.ashx文件)中。現在我嘗試調用緩存對象,就像你爲一個aspx頁面做的一樣,但我不能,可能是因爲它是一個處理程序而不是一個網頁。 所以,

Cache.Insert("Id", 123); 

將無法​​在Handler中工作。所以然後我嘗試HTTPRuntime.cache。但是在做了一些研究之後,我發現HTTPRuntime.cache對於整個應用程序來說是很常見的。我不完全理解「整個申請」。這是否意味着它是由訪問我們應用程序的不同計算機上的所有用戶共享的?或者是否意味着它被所有用戶一臺電腦訪問我們的應用程序共享。因爲如果是後者,我可以。 那麼HTTPRuntime.cache是​​緩存一個瀏覽器(或一臺計算機)數據的好方法,還是有更好的方法來實現瀏覽器緩存來存儲數據?

+0

緩存和SessionState是兩個完全不同的東西。你不能交替使用它們。這聽起來像你正在尋找一個持久的sessionstate。通常情況下,人們只會將數據保存在數據庫中。 – leppie

+0

我沒有交替使用它們。我試圖實現緩存解決方案來存儲20分鐘的用戶數據。所有我想知道的是,如果HTTPRuntime.Cache瀏覽器(或計算機特定)或對於在不同計算機上工作的應用程序的所有用戶通用 –

回答

4

緩存存儲在Web服務器內存中。

你應該明白the differences between Viewstate, Cache and Session

+0

感謝您的及時答覆,我仔細閱讀了文檔,並明確指出會話狀態和緩存。但是瀏覽器緩存呢?我無法將用戶信息存儲在瀏覽器緩存中嗎?這樣它就可以被多個用戶共享,而是在一臺計算機上(或瀏覽器)共享。 –

+0

@ Abhi.Net在該句子中定義「用戶」......如果您的意思是「用戶帳戶」(例如域用戶),那麼否:他們的數據有意分開。如果你的意思是人們登錄/註銷你的*應用程序*,那麼通過「localstorage」可能會有一些可能的事情。但那是一個JavaScript問題。 –

+0

在我的情況下,用戶的意思是「用戶帳戶」。通過JavaScript實現它是沒有問題的。你的意思是「他們的數據是有意分離的」?從我收集的是,我不能通過.NET代碼將用戶信息存儲在瀏覽器緩存中?我對嗎?如果是這樣,你會建議什麼是最好的方式來實現我所嘗試的.Sessions,cookies ....? –