问一个关于数据缓存的问题

Twitter 2008-05-22 09:18:00
像一些社区网站,登陆之后,就会显示你相应的积分等信息,然后应该是设定一个缓存策略,比如说10分钟,在10分钟我不停的刷浏览器,就算我的积分信息变化了,也不会获得更新,只有等10分钟之后再刷新,才会获得最新。这样可以减轻服务器的压力。
但是前提是必须登陆。

我试了一下在aspx页面中加上
<%@ OutputCache Duration=600 VaryByParam="None" %>

代码,并且在aspx页面中没有写其他的代码,判断登陆的代码都是在后台实现的

这样做可以在10分钟内刷新浏览器但是不更新数据,如果我在10分钟内登陆的话,也不能马上看到我想要的信息,要等10分钟后刷新才可以。

请教一下各位大虾,应该怎么实现登陆后的缓存呢?
...全文
88 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
周公 2008-05-22
  • 打赏
  • 举报
回复
下面的示例是一个页面,该页面为用户显示缓存中某项的赋值,当该项从缓存中移除时将通知用户。它创建 RemovedCallback 方法,该方法具有 CacheItemRemovedCallback 委托的签名,以在缓存项被移除时通知用户并使用 CacheItemRemovedReason 枚举告诉用户该项被移除的原因。此外,它使用 Cache.Item 属性将对象添加到缓存中并检索这些对象的值。在 AddItemToCache 方法中,它使用 Cache.Add 方法向缓存中添加项。若要使用 CacheItemRemovedCallback 委托,您必须使用此方法或 Cache.Insert 方法向缓存中添加项,以便该项被移除时 ASP.NET 能自动调用正确的方法。自定义的 RemoveItemFromCache 方法使用 Cache.Remove 方法显式地从缓存中删除该项,这导致调用 RemovedCallback 方法。


<html>
<Script runat=server language="C#">
static bool itemRemoved = false;
static CacheItemRemovedReason reason;
CacheItemRemovedCallback onRemove = null;

public void RemovedCallback(String k, Object v, CacheItemRemovedReason r){
itemRemoved = true;
reason = r;
}

public void AddItemToCache(Object sender, EventArgs e) {
itemRemoved = false;

onRemove = new CacheItemRemovedCallback(this.RemovedCallback);

if (Cache["Key1"] == null)
Cache.Add("Key1", "Value 1", null, DateTime.Now.AddSeconds(60), TimeSpan.Zero, CacheItemPriority.High, onRemove);
}

public void RemoveItemFromCache(Object sender, EventArgs e) {
if(Cache["Key1"] != null)
Cache.Remove("Key1");
}
</Script>
<body>
<Form runat="server">
<input type=submit OnServerClick="AddItemToCache" value="Add Item To Cache" runat="server"/>
<input type=submit OnServerClick="RemoveItemFromCache" value="Remove Item From Cache" runat="server"/>
</Form>
<% if (itemRemoved) {
Response.Write("RemovedCallback event raised.");
Response.Write("<BR>");
Response.Write("Reason: <B>" + reason.ToString() + "</B>");
}
else {
Response.Write("Value of cache key: <B>" + Server.HtmlEncode(Cache["Key1"] as string) + "</B>");
}
%>
</body>
</html>
周公 2008-05-22
  • 打赏
  • 举报
回复
System.Web.Caching 命名空间提供用于缓存服务器上常用数据的类。

此命名空间包括 Cache 类,该类是一个字典,您可以在其中存储任意数据对象,如哈希表和数据集。它还为这些对象提供了失效功能,并为您提供了添加和移除这些对象的方法。您还可以添加依赖于其他文件或缓存项的对象,并在从 Cache 对象中移除对象时执行回调以通知应用程序。
周公 2008-05-22
  • 打赏
  • 举报
回复
使用Cache可以全部保存。
而不仅限于某个页面。

人家这么做一般都是用Cache(至少我喜欢这么做)。
virusswb 2008-05-22
  • 打赏
  • 举报
回复
.NET中如何有效的使用Cache
virusswb 2008-05-22
  • 打赏
  • 举报
回复
http://webservices.ctocio.com.cn/wsnettec/90/8122590.shtml

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧