日期:2014-05-18  浏览次数:20396 次

如何用程序来即时更新设置了缓存时间的aspx,ascx页
比如:
/new/a.aspx
/Control/b.ascx

这个页都设置了缓存时间为30分钟,比如当后台添加了新数据,又想让这二个页面数据能马上更新,而不是等这二个页面到了更新时间才去自动更新

这样的代码怎么写?

------解决方案--------------------
继承CacheDependency类型而创造自己的缓存依赖系统
SqlDataSourceDependency(SqlDataSource上启用EnableCaching并设置缓存依赖的表),只有在表数据修改时才真正读取数据库
------解决方案--------------------
Duration本来就是一个“最长时间”意思的。真正会不会使用缓存,就是看会不会设置缓存依赖项,使得后台数据修改时立刻清空缓存脏数据。如果这个不会,只会设置Duration,那就等于不会使用缓存。

在asp.net中提供和许多缓存依赖方法。比如SqlDependency,比如VaryByCustom。举个例子:
HTML code
<%@ Page Language="C#" %>
<%@ OutputCache Duration="6000" VaryByParam="*" VaryByCustom="方案1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <%= DateTime.Now.ToLongTimeString() %>
    </form>
</body>
</html>