我有一个在线商店,软件是高度定制的,但不完全是我们的。我们出售旅游,其中一些有预订,所以我添加了一个日历,让他们选择他们想要的日期/时间。最初,每个cal_SelectionChanged()
调用都从商店数据库中查找内容,当然,这非常慢。我想使用数据字典来获取一次信息并在需要时使用它。
我有这堂课:
public partial class ConLib_Custom_BuyTourProductDialog : System.Web.UI.UserControl
这在该类中声明。
static Dictionary<string, string> CustomFieldDict = new Dictionary<string, string>();
我还有一个功能可以从我的页面上需要的数据库中加载所有位。我的计划是调用它Page_Load()
并在需要时访问信息。
protected void LoadCustomFieldDictionary()
{
string _sku = _Product.Sku.Trim().ToLower();
if (CustomFieldDict.ContainsKey("Sku"))
{
// is the dictionary entry for *this* sku?
if (CustomFieldDict["Sku"] == _sku)
{
return; // already have this one.
}
}
CustomFieldDict["Sku"] = _sku;
CustomFieldDict["EventId"] = TTAUtils.GetCustomFieldValue(_Product, "EventId");
CustomFieldDict["ResEventTypeId"] = TTAUtils.GetCustomFieldValue(_Product, "ResEventTypeId");
etc.
}
然后我的老板加载了一个页面 - 好的,一切都很好 - 并更改了数据库中的一个数据位以指向不同的、错误的ResEventTypeId
. 重新加载页面,它有新的数据。他把它改回原来的,它“卡”在错误的信息上。我在 iPad 上加载了一个浏览器,然后去了那里,它也给我提供了错误的信息。
似乎服务器正在缓存它DataDictionary
,即使我们更改数据库,所有访问者,即使在其他会话中,也会得到这个缓存的错误信息。
- 你觉得这个评价对吗?
- 这样做的正确方法是什么,以便更改日期的访问者获得某种缓存的查找速度,而另一个浏览器从数据库中获得新的集合?
- 我如何让它“忘记”它认为它知道的东西并接受新信息,直到我修复它?重置 IIS?
谢天谢地,这是在开发服务器上,而不是我的现场商店!
谢谢你的帮助。我学到了很多关于 C# 和 .NET 的知识,但它是树荫机制类型的东西,而且我缺乏正式的培训,在这种情况下确实会有所帮助。任何帮助表示赞赏!