ASP.Net Cache问题/问题。缓存的位置和方式。 | Costum ADO.Net代码

时间:2011-09-18 00:38:24

标签: c# asp.net mysql caching ado.net

我正在开发一个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%)

非常感谢:)

1 个答案:

答案 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
}