假设我需要从数据库中填充4或5个带有项目的下拉列表。每个下拉将具有<其中15项。这些项目几乎不会改变。
现在我可以在每次访问页面时查询数据库,或者我可以从自定义类中获取值,以检查它们是否已存在于ASP.Net的缓存中,并且只有在它们不查询数据库时才更新缓存。
这对我来说是微不足道的,但我不确定性能是否会更好。我认为会是(虽然不太可能是巨大的)。
您怎么看?
答案 0 :(得分:6)
在处理性能问题时,您应该始终:
说完然后是的,你所建议的似乎是明智的(你通常会期望内存缓存比数据库更快),但是它还取决于返回的数据,你的内存负载是多少应用程序是,查询有多贵,查询参数是什么等等......
您应该对之前和之后的更改进行性能测试,以确定更改的实际效果(包括内存加载等),并且只有在确定更改后才应该执行此类操作这些下拉列表是造成不可接受的性能问题的原因。
答案 1 :(得分:0)
这就是System.Web.Helpers.WebCache类的存在。
答案 2 :(得分:0)
IO通常比内存操作(按数量级)更昂贵。特别是如果您的数据库在另一台机器上,那么您甚至可以使用网络资源,并且使用缓存肯定会更快。
但实际上,当你通过测量确定它是一个性能瓶颈时,最终会进行优化。
答案 3 :(得分:0)
快速回答您的问题:
思考的其他要点..
性能: 同样,与您获取主数据的直接往返相比,性能更多地取决于应用程序的负载。简而言之,As Thomas建议使用缓存类!