技术开发 频道

缓存之缓存文件依赖及编程方式设置输出缓存过期


【IT168技术文档】

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