ASP.NET缓存应用程序变量
我想知道使用应用程序变量进行缓存的潜在问题。在前言中,我有一个自定义应用程序对象,它将所有应用程序数据存储在一个应用程序变量中–该对象将数据组织在XML云中,并将云存储在一个变量中以提高性能 我知道数据集缓存,但我的所有DAL对象都选择只读数据读取器以提高性能,因此,如果解决方案涉及数据集,我有大量的重构工作要做——这并不理想。记录数量从低到中等,涉及网站数据和中小型项目管理应用程序;我们说的不是50万张唱片 以下是我打算在DAL类中使用的函数结构Select All:ASP.NET缓存应用程序变量,asp.net,caching,variables,Asp.net,Caching,Variables,我想知道使用应用程序变量进行缓存的潜在问题。在前言中,我有一个自定义应用程序对象,它将所有应用程序数据存储在一个应用程序变量中–该对象将数据组织在XML云中,并将云存储在一个变量中以提高性能 我知道数据集缓存,但我的所有DAL对象都选择只读数据读取器以提高性能,因此,如果解决方案涉及数据集,我有大量的重构工作要做——这并不理想。记录数量从低到中等,涉及网站数据和中小型项目管理应用程序;我们说的不是50万张唱片 以下是我打算在DAL类中使用的函数结构Select All: if (AppSetti
if (AppSetting.GetSetting(_CacheSettingName) == "")
{
SqlHelper objSqlHelper = new SqlHelper();
XmlReader objReader = objSqlHelper.GetXmlReaderByCmd("Select * From FAQ FOR XML PATH('item'), root('" + _CacheSettingName + "')");
//load Cache
StringBuilder _xml = new StringBuilder();
objReader.Read();
while (objReader.ReadState != ReadState.EndOfFile)
{
_xml.Append(objReader.ReadOuterXml());
}
objSqlHelper.Dispose();
AppSetting.SaveSetting(_CacheSettingName, _xml.ToString());
}
//we have cache loaded
// now load the object list from the XML cloud from the application cache
List<FAQBLL> objFAQList = new List<FAQBLL>();
FAQBLL objFAQ;
XmlDocument oXmlDocument = new XmlDocument();
oXmlDocument.LoadXml(AppSetting.GetSetting(_CacheSettingName));
foreach (XmlNode oNode in oXmlDocument.FirstChild.ChildNodes)
{
objFAQ = new FAQBLL();
objFAQ.ID = Convert.ToInt32(oNode.SelectSingleNode("ID").InnerXml);
objFAQ.Question = oNode.SelectSingleNode("Question").InnerXml;
objFAQ.Answer = oNode.SelectSingleNode("Answer").InnerXml;
objFAQList.Add(objFAQ);
objFAQ = null;
}
return objFAQList.Count > 0 ? objFAQList: null;
因此,我的缓存将所有内容返回给调用进程,然后我链接以按活动、按位置筛选对象。在插入、更新和删除时,我有一行代码来清除缓存。同样,我的优势是使用只读数据读取器来提高性能,我的应用程序对象将XML组织到一个应用程序变量中。我的想法是,这是低开销的,当我只是读取数据时,不必放弃数据集的数据读取器
想法?意见?你被这件事伤到了吗 是的,有点精神创伤。将应用程序变量用作缓存的问题是,您失去了缓存的一些最佳功能。例如,asp.net缓存提供了一些很棒的缓存失效功能。这确保了缓存不会越来越多地占用越来越多的资源,并且确保缓存保持新鲜(例如,如果源于数据库)
你真的应该考虑在工作中使用合适的工具谢谢你的帮助。考虑到这些问题,考虑数据集缓存可能是明智的。