2012-06-04 109 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 ....? –