2011-05-12 87 views
4

我正在使用webmethod从数据库&中提取数据,将其存储在一个静态变量中,以便下一次不会触及数据库,因为数据正在被频繁访问。创建静态变量似乎不是一个合适的解决方案什么是这种情况的代名词。在哪里存储数据,以避免数据库击中?

e.g

public static List<SupplierGridData> lstFullSupplierData; 

public static List<SupplierGridData> GetProductData() 
{ 
    if (lstFullSupplierData == null) 
    { 
     //first time get data from database 
     lstFullSupplierData = new List<SupplierGridData>(); 
     lstFullSupplierData = new POProcess().GetInquiryDetails(); 
    } 
    else 
    { 
     //use lstFullSupplierData which holds data 
    } 
} 

回答

1

以最简单的解决方案,可以击中分贝一次if(!this.IsPostBack)然后埋在页面视图状态的东西,如果它没有太多的东西(假设你不需要在其他页面进行) 。否则,会话或缓存将按其他人的建议进行操作。

+1

我不能使用viewstate becoz我正在使用PageMethods即不支持视图状态的静态方法 – Tuscan 2011-05-12 10:51:18