你可以考虑更改Cache的Key的命名规则。
例如:
source=Cache("MyDataSet"+txt_store_no.Text)
例如:
source=Cache("MyDataSet"+txt_store_no.Text)
解决方案 »
- URLRewriter重写不能实现的问题
- Repeater中找不到下拉列表怎么办DropDownList
- (跪求!)如何在后台取得客户端用JS插入到table中的值
- |zyciis|第二贴:不管传入 DataTable Dictionary<>List<>ArrayList这些数据类型都能输出他里面的数据 急
- 有没有对上传的图片进行可视化裁切的控件,asp.net如何作??
- .NET 母板的路径问题
- 求一个NET2.0的中文包下载地址
- 100分求解,ASP.net中你是如何将表格导出到excel的?
- 为什么我的PageView里的DataGrid的绑定不起作用?
- 在IT行业混,做技术、搞市场那一个比较有前途。
- 怎样在ASP.Net中在图片上追加热区?
- 当前信任级别设置不支持调试 怎么办??
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
随着key的组合数的增多,要缓存的数据就会响应增多了。
最好的方法就是除非公共的数据,否则不要乱用Cache
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分多钟,结果数据还是在内存取出来的
if (!Page.IsPostBack)
{
BindGrid();
}
中的缘故,若是这样,请将if (!Page.IsPostBack)去掉即可!
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 里的方法,只有在分页的时候使用内存里的数据。可是内存问题,不知道是不是会太消耗了呢?
还请大家讨论讨论