我正在开发一个ASP.Net电子商务应用程序。 我使用ASP.Net Web Forms。 当我完成整个应用程序时,我考虑缓存一些数据,以便应用程序性能提高。 (糟糕的主意......我必须从头开始考虑)
我不使用内置控件这样的datagrid。 我喜欢使用MS-Sql。
我使用MySql server us数据库和我开发的自定义UserControls。 (自定义ADO.Net代码)
要从我使用的数据库中获取数据:
表示表IE字段的对象: 如果我的表(MyTable)有:
ID , Title, Date
我创建将创建一个类似上面的对象:
public class MyTable{
public int ID {get;set;}
public string Title {get;set;}
public Datetime Date {get;set;}
}
要管理表中的字段,请使用上面的内容:
public class MyTableDatabaseManager{
//Insert a row
public bool insertMyTable(MyTable item){
//...Open a mysql connection , do job , close it.
}
//Update a row
public bool updateMyTable(MyTable item){
//...Open a mysql connection , do job , close it.
}
//Delete a row
public bool deleteMyTable(MyTable item){
//...Open a mysql connection , do job , close it.
}
//Get one row
public MyTable deleteMyTable(int id){
//...Open a mysql connection , do job , close it.
}
//Get some rows or all of them
public List<MyTable> deleteMyTable(int limit,int page,bool Ordering){
//...Open a mysql connection , do job , close it.
}
}
我的问题是:
如何在缓存中存储一些数据,以便我不会一直与数据库进行通信?
如何在数据更改时重新设置缓存程序?
(我知道如何,但我把代码放在哪里:P当我做更改或插入某些值时,它可以在代码隐藏文件中,或者在其他地方?)
输出缓存对我不起作用,因为大多数提供的数据都是特定于用户的。 (约80%)
非常感谢:)
答案 0 :(得分:3)
只需将密钥作为您的userId或您希望改变它的任何内容插入缓存中。
Cache.Insert(yourUserIdOrWhateverKey, yourObject);
http://msdn.microsoft.com/en-us/library/6hbbsfk6%28v=VS.100%29.aspx
请注意此缓存查看器(也请查看上面的msdn链接)
http://authors.aspalliance.com/aldotnet/examples/cacheviewer.aspx
要删除,您只需致电
Cache.Remove(yourKey);
请参阅: http://aspdotnetfaq.com/Faq/How-to-clear-your-ASP-NET-applications-Cache.aspx
要检查您的商品是否在缓存中,只需执行
var yourCachedObject = (CustomClass)Cache["YourUserKey"]; if(yourCachedObject == null) { //it wasnt in the cache }