如何保存常用值而不必每次都通过数据库?

时间:2011-11-13 16:21:17

标签: asp.net-mvc-3

我正在制作调查问卷,我想保存用户已完成的问题数量和可用问题的数量。我知道如何计算这些值,但每次用户要求显示此信息的页面时(我经常这样做),我都不想运行数据库。

我考虑过在会话中保存它,但问题是会话在身份验证之前到期,因此信息可能会丢失,但用户仍然会登录。

有什么建议吗?

编辑:我忘了提到我在服务器上工作,我自己无法指定会话超时。此外,当用户回答问题时,必须更新已回答问题的数量。

3 个答案:

答案 0 :(得分:0)

关于缓存和ASP.NET的非常有用的资源是http://msdn.microsoft.com/en-us/magazine/gg650661.aspx

由于您无法指定会话超时,请使用Cache class - 它支持几种不同的机制来何时丢弃缓存的项目......

编辑 - 根据评论:

使用缓存,您应该实现“直写” - 舍入 - 即始终更新缓存和数据库,这意味着缓存始终是正确的,并且在应用程序启动初始加载后,任何读取都不会到达数据库。

另一种选择是更新数据库并使缓存项无效...在下次读取访问时,您将获得“缓存未命中”并通过点击数据库并将结果保存到缓存中来处理...这样您就可以数据库用于读取最坏情况和写入时间...这种模式只有在读取的内容多于写入时才有用...

答案 1 :(得分:0)

您可以考虑增加会话超时。

答案 2 :(得分:0)

会话通常在每次向服务器发出请求时进行扩展,因此当有人使用调查问卷时,请定期使用JavaScript向服务器发送请求以确保会话未结束。