【发布时间】:2011-01-11 09:51:42
【问题描述】:
我在 asp.net 页面中有一个对象列表。每个对象代表一个商店的产品,由产品名称、产品id、价格、可用数量等组成。客户可以从下拉列表中选择一个产品,对应的字段,如价格、数量等自动填充适当的值。出于性能原因,当页面加载时,我从数据库中获取了整个产品列表并将其存储在“Cache['Product']”变量中,这样当下拉的值更改事件发生时,我可以得到没有任何数据库查询的对应值。
此策略在我的本地开发环境中运行良好,但是当页面上传到服务器时,相应的字段没有得到适当的值。即使从下拉列表中选择了产品,相应的字段也没有显示适当的价格、数量等。似乎我的缓存策略不起作用。
我不知道这里出了什么问题。我已将缓存变量设置如下:
if(Cache["ProductList"] == null)
Cache.Insert("ProductList", Product, null, DateTime.Now.AddHours(1), Cache.NoSlidingExpiration);
当我需要检索缓存值时,我已经完成了如下操作:
List<Product> CachedProduct = (List<Product> )Cache["ProductList"];
我完全不知道这可能是什么问题。我需要一些帮助:(
【问题讨论】:
-
只有一台服务器还是多台服务器?您的“ProductList”程序是否检索到正确的数据?您的数据正确吗?
-
你能澄清一下你所说的“不工作”是什么意思吗?什么都没有出现?显示错误的项目?二级下拉菜单没有看到正确的值? 没有发生的事情很重要:)
-
“不工作”是指当用户从下拉列表中选择不同的产品时,这意味着当下拉列表的“selectedIndexChanged”事件发生时,数量字段中的值,价格字段应根据新产品而变化。现在有时它会改变,有时它不会。但是在我的本地主机上,它不会引起任何问题。
-
@Rubens:是的,我的产品列表过程正在检索正确的数据,它们都在缓存中可用。