这是我的情景: 1)用户运行搜索以检索通过LinqDataSource在ListView中显示的值。 2)他们点击其中一个项目,将他们带到另一个页面,在那里可以检查细节,进一步深入研究等。 3)用户想要返回原始ListView结果以选择另一个项目进行检查。
我可以看到可以传递querystring params,允许每次用户返回ListView时重复查询,但似乎应该有一种方法来缓存结果。
由于我正在使用LinqDataSource,我相信每次运行查询时都会获取实际结果。我目前正在向e.Results提供一个“选择新的{blah,blah}”类型的IEnumerable,因为它填充了匿名类型,所以无法转换为List。
简而言之: 1)尝试在用户会话中放置潜在的大型查询结果是否有意义? 2)如果确实如此,List是合理的数据结构吗? 3)我是否需要求助于创建具有正确属性的类来保存匿名数据,枚举查询返回,填充List? 4)对于此类型目标,是否有比LinqDataSource更好的选择? 5)或者,每次访问ListView时运行查询是否更有意义?
如果不清楚,我道歉。我真的很感激,如果有人可以让我直截了当,然后我将一大堆空闲时间用在错误的道路上:)
答案 0 :(得分:2)
首先,我建议您查看ASP.NET附带的caching mechanism,除非该数据对某个用户是私有的。
其次,我建议您以某种方式设计应用程序,以便创建自然点,在查询数据库之前尝试从缓存中获取数据(并使用过期规则将数据插入缓存),但是在确认它确实会产生影响之前,不要开始将内容放入缓存中。
衡量实际花费在检索数据上的时间,并在产生差异的情况下使用缓存。
答案 1 :(得分:0)
我不确定从死里复活的线程是否很酷,但是我发现这是回答这个问题: