你可以考虑更改Cache的Key的命名规则。
例如:
source=Cache("MyDataSet"+txt_store_no.Text)

解决方案 »

  1.   

    [Visual Basic]
    Public Function Add( _
       ByVal key As String, _
       ByVal value As Object, _
       ByVal dependencies As CacheDependency, _
       ByVal absoluteExpiration As DateTime, _
       ByVal slidingExpiration As TimeSpan, _
       ByVal priority As CacheItemPriority, _
       ByVal onRemoveCallback As CacheItemRemovedCallback _
    ) As Object[C#]
    public object Add(
       string key,
       object value,
       CacheDependency dependencies,
       DateTime absoluteExpiration,
       TimeSpan slidingExpiration,
       CacheItemPriority priority,
       CacheItemRemovedCallback onRemoveCallback
    );[C++]
    public: Object* Add(
       String* key,
       Object* value,
       CacheDependency* dependencies,
       DateTime absoluteExpiration,
       TimeSpan slidingExpiration,
       CacheItemPriority priority,
       CacheItemRemovedCallback* onRemoveCallback
    );[JScript]
    public function Add(
       key : String,
       value : Object,
       dependencies : CacheDependency,
       absoluteExpiration : DateTime,
       slidingExpiration : TimeSpan,
       priority : CacheItemPriority,
       onRemoveCallback : CacheItemRemovedCallback
    ) : Object;参数
    key 
    用于引用该项的缓存键。 
    value 
    要添加到缓存的项。 
    dependencies 
    该项的文件依赖项或缓存键依赖项。当任何依赖项更改时,该对象即无效,并从缓存中移除。如果没有依赖项,则此参数包含空引用(Visual Basic 中为 Nothing)。 
    absoluteExpiration 
    所添加对象将过期并被从缓存中移除的时间。 
    slidingExpiration 
    最后一次访问所添加对象时和该对象过期时之间的时间间隔。如果该值等效于 20 分钟,则对象在最后一次被访问 20 分钟之后将过期并从缓存中移除。 
    priority 
    对象的相对成本,由 CacheItemPriority 枚举表示。缓存在退出对象时使用该值;具有较低成本的对象在具有较高成本的对象之前被从缓存移除。 
    onRemoveCallback 
    在从缓存中移除对象时所调用的委托(如果提供)。当从缓存中删除应用程序的对象时,可使用它来通知应用程序。     If (IsNothing(Cache("MyDataSet"))) Then
          Cache.Add("MyDataSet", "Value 1", Nothing, DateTime.Now.AddSeconds(60), TimeSpan.Zero, CacheItemPriority.High, onRemove)
        End If
      

  2.   

    我按你说的写了,速度又慢了,好象就没放内存似的总显示的是----> Response.Write("显示创建的数据集")
      

  3.   

    速度当然慢了。
    随着key的组合数的增多,要缓存的数据就会响应增多了。
    最好的方法就是除非公共的数据,否则不要乱用Cache
      

  4.   

    Sub BindGrid()
            Dim source As DataSet
            source = Cache("MyDataSet")
            If source Is Nothing Then
                Dim sv As New ManSysWebServices.ManSysWebServices
                Dim store_no As String
                store_no = txt_store_no.Text.Trim
                source = sv.JTQLHQry(store_no)
                Cache("MyDataSet") = source
                Dim onremove As Caching.CacheItemRemovedCallback
                Cache.Add("MyDataSet", "Value 1", Nothing, DateTime.Now.AddSeconds(60), TimeSpan.Zero, CacheItemPriority.High, onremove)
                Response.Write("显示创建的数据集")
            Else
                Response.Write("从缓存中检索到的数据集")
            End If
            MyDataGrid.DataSource = source
            MyDataGrid.DataBind()    End Sub我这么写的,编译通过了,还是没释放掉。我等了1分多钟,结果数据还是在内存取出来的
      

  5.   

    我想不是你Cache的问题,而可能是因为你的BindGrid方法是在
    if (!Page.IsPostBack)
    {
      BindGrid();
    }
    中的缘故,若是这样,请将if (!Page.IsPostBack)去掉即可!
      

  6.   

    Sub BindGrid()
            Dim sv As New ManSysWebServices.ManSysWebServices
            Dim store_no As String
            store_no = txt_store_no.Text.Trim
            source = sv.JTQLHQry(store_no)
            Cache("MyDataSet") = source
            Response.Write("显示创建的数据集")
            MyDataGrid.DataSource = source
            MyDataGrid.DataBind()
    End Sub    Private Sub btn_check_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_check.Click
            MyDataGrid.CurrentPageIndex = 0
            BindGrid()
        End Sub    '分页函数
        Sub MyDataGrid_PageChange(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)
            MyDataGrid.CurrentPageIndex = e.NewPageIndex
            source = Cache("MyDataSet")
            MyDataGrid.DataSource = source
            MyDataGrid.DataBind()
            Response.Write("从缓存中检索到的数据集")
        End Sub目前只能这样了,
    就是在按button时,直接掉用web services 里的方法,只有在分页的时候使用内存里的数据。可是内存问题,不知道是不是会太消耗了呢?
    还请大家讨论讨论