程序中使用了Cache ,把一个对像保持在Cache中,它会一直保持下去, 如果内容有更新,cache如何更新? 因为我用的是虚拟主机,我没有权限把服务器关掉,再重新启动加载程序。

解决方案 »

  1.   

    如果你使用Cache前有先判断是否为null,是null就先赋值。有了这个保证,你可以调用HttpRutime.Close();马上释放所有缓存。
      

  2.   

    如果向缓存添加一个依赖于另一个对象(如文件或文件数组)的项,则在该对象更改时会自动从缓存中移除该依赖项。例如,假设您基于 XML 文件中的数据创建一个 DataSet 对象。可以利用使 DataSet 依赖于 XML 文件的 CacheDependency 对象将该 DataSet 添加到缓存中。如果该 XML 文件发生更改,则 DataSet 从缓存中移除。可以用 Add 和 System.Web.Caching.Cache.Insert 方法向应用程序缓存中添加具有依赖项的项。不能使用 Item 属性向缓存中添加具有依赖项的项。若要设置依赖项,请创建 CacheDependency 类的一个实例,指定项依赖的文件、键或目录,然后将该依赖项传递给 Add 或 System.Web.Caching.Cache.Insert 方法。CacheDependency 实例可以表示单个文件或目录、一组文件或目录,或者带有一系列缓存键的一组文件或目录(这些缓存键表示 Cache 对象中存储的其他项)。下面的代码示例演示如何使用 HasChanged 属性来确定 CacheDependency 是否在对 Cache 中某项的上一个请求之后已更改。将传入 start 参数的 dt 值设置为 DateTime.Now。// Insert the cache item.
    CacheDependency dep = new CacheDependency(fileName, dt);
    cache.Insert("key", "value", dep);// Check whether CacheDependency.HasChanged is true.
    if (dep.HasChanged)
      Response.Write("<p>The dependency has changed.");  
    else Response.Write("<p>The dependency has not changed.");
      

  3.   

    当你数据更新后的话应该立即更新这个cache,并设置cache的过期时间。获取数据的时候直接读取这个cache,在这个获得cache代码中先判断cacah是否为空,如果不为空直接返回,为空的话重数据库中读取之后写入cache中同时返回你要获取的数据。
      

  4.   

    晕  asp.net技术群里也没见你说话啊~~~
    在你要更新内容的事件里加入Cache.Remove("newText");就可删除指定的Cache了,然后Cache.Insert更新内容.
      

  5.   

    缓存系统有Dependency,一个或者一堆依赖项中有一个发出更新消息就会自动更新。如果把缓存更新理解为手动删除数据,没有理解缓存系统的含义。
      

  6.   

    例如我从数据库中读了一个表 到 DataTable 中,并且把DataTable缓存,这时候如果数据库中的表有更新,如何及时更新DataTable 呢???
      

  7.   

    那你更新数据库的时候,同时手动把Cache清空一下就可以了