【问题标题】:ASP.Net Cache problem/question. Where and how to cache. | Costum ADO.Net codeASP.Net 缓存问题/问题。在哪里以及如何缓存。 |服装 ADO.Net 代码
【发布时间】:2011-11-19 12:03:06
【问题描述】:

我正在开发一个 ASP.Net 电子商务应用程序。 我使用 ASP.Net Web 表单。 当我完成整个应用程序时,我正在考虑缓存一些数据,这样应用程序的性能就会提高。 (坏主意……我必须从一开始就考虑到这一点)

我不使用诸如数据网格之类的内置控件。 我也使用 MS-Sql。

我使用 MySql 服务器美国数据库和我开发的自定义用户控件。 (自定义 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%)

非常感谢:)

【问题讨论】:

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


    【解决方案1】:

    只需插入缓存,键是您的 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"]; 如果(你的缓存对象 == 空) { //它不在缓存中 }

    【讨论】:

    • 谢谢,但我想知道是否还有其他方法可以使用,因为:我使用分页、过滤和短路..有些数据是用户特定的,所以如果我缓存这么多的数据会有问题吗?
    • 缓存就是缓存。无论如何它都会使用内存,所以由您决定存储多少、存储什么、何时删除等。
    • 非常感谢你 :) Strong-> 直截了当的回答:P 这就是我想听到的。
    • 如果我可以将我想要的所有内容添加为缓存的键,这样缓存是否很好:key=query , value = object?
    • 当然,只要这为您提供了一个独特的缓存项,我不明白为什么不这样做。但是,如果它只是一个用户的搜索并且您不希望他们一次运行多个搜索,那么您可能希望根据他们的用户 ID 缓存它。如果他们可以拥有 >1 个浏览器窗口或搜索历史记录,那么我会根据查询保留它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 2011-02-28
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多