惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
量子位
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
Recent Announcements
Recent Announcements
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Security Blog
Microsoft Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
J
Java Code Geeks
V
V2EX
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
博客园 - Franky
爱范儿
爱范儿
T
Tailwind CSS Blog
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
博客园_首页
B
Blog RSS Feed
博客园 - 司徒正美
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - 思然

邮件带图片附件 - 思然 - 博客园 XML查找节点 - 思然 - 博客园 动态生成rdlc 报表(原创) 图片处理 - 思然 - 博客园 数据绑定及其他 - 思然 - 博客园 图片上传及网络相册功能 SQL Server 2005 Express 使用心得 - 思然 附加进程调试和存储过程调试 (转)DIV CSS布局教程:应用ul、li实现表格形式 用户控件的使用经验 防刷新多次提交 枚举的应用 添加div符号注意符号问题 Datalist调用本地文件绑定图片 用户控件-TreeView的用法 关于table控件的一个疑难问题(涉及循环) 关于javascript调用webservices的中文参数乱码的问题 服务器端和客户端清除TextBox控件的值 获取母版页的控件的方法
缓存之缓存文件依赖及编程方式设置输出缓存过期
思然 · 2008-06-26 · via 博客园 - 思然

可以缓存页面的一个文件或一组文件,设置依赖,但文件被改时,缓存失效
aspx在头的地方写
<%@ OutputCache VaryByParam="none" Duration="9999" %>
可以在此调用时间方便知道是否缓存 
 <%=DateTime.Now.ToString("T")%>
 protected void Page_Load(object sender, EventArgs e)
    {
        Response.AddFileDependency(MapPath("luca.xml"));

    }
用Gridview绑定XML
如果修改此XML缓存失效

另一种编程设置缓存失效
如有个页面是显示jobs数据的页面设置了缓存,当我在另一个页面做添加数据时,我就要把显示jobs的数据缓存去掉
添加一个页面

<%@ OutputCache VaryByParam="none" Duration="9999" %>
这个页面就叫jobs.aspx
获取jobs的值
用GridView等绑定随便我就不写了
加一个链接到添加jobs值得页面
 <a href="AddJobs.aspx">AddJobs.aspx</a>

在addjobs页面
当在做完添加操作后写如下代码

  string sql = "insert into jobs values('luca',30,50)";
        SqlCommand cmd = new SqlCommand(sql,con);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
  HttpResponse.RemoveOutputCacheItem(Page.ResolveUrl("~/jobs.aspx"));
        Response.Redirect("~/jobs.aspx");
    }

就可以还一种情况
 如果有多个页面都调用jobs数据并且都缓存了
 上面的 HttpResponse.RemoveOutputCacheItem一次只能去除一个页面 我们就要用到Cache
在jobs.aspx中
protected void Page_Load(object sender, EventArgs e)
    {
        Cache.Insert("jobs", DateTime.Now);
        Response.AddCacheItemDependency("jobs");
    }
然后在addjobs中在添加操作后
 Cache.Remove("jobs");
就ok了
如果另一个页面如jobsDetails.aspx
也缓存了jobs数据
也只要page_load中写
     Response.AddCacheItemDependency("jobs");
也就同样会失去缓存