我已经阅读了一些关于此主题的内容,但我很好奇有哪些最佳方法可以优化使用ASP.NET缓存以及如何确定应该将哪些内容放入和不放入缓存。另外,有没有什么经验规则可以决定某些内容在缓存中应该保留多长时间?
我已经阅读了一些关于此主题的内容,但我很好奇有哪些最佳方法可以优化使用ASP.NET缓存以及如何确定应该将哪些内容放入和不放入缓存。另外,有没有什么经验规则可以决定某些内容在缓存中应该保留多长时间?
暂时不要实现缓存。
在尝试了所有索引、查询调优、页面简化和其他更为常规的提高性能的方法之后再考虑缓存。如果在最后一步之前就启用缓存,你将很难找出性能瓶颈所在。
当然,如果在最终启用缓存时你已经正确地调整了后端,它将比今天启用缓存更长时间地发挥更好的作用。
关于性能调优和缓存,我听过的最好的一句话是这是一门艺术而非科学。很抱歉我不记得是谁说的,但重点在于影响应用程序性能的因素太多了,你需要针对每种情况进行评估,并对该情况进行深思熟虑的微调,直到达到预期的结果。
我意识到我没有提供任何具体细节,但我认为你实际上也无法提供。
不过,我会给出一个之前的例子。我曾经参与开发一个应用程序,该应用程序频繁调用Web服务来构建客户档案,例如:
每个由Web服务返回的对象都有助于构建最终页面所需的更高级别的对象。起初,我们将所有对象收集到主对象中并进行缓存。然而,当事情不如我们所愿时,我们意识到单独缓存每个调用的对象会更有意义,这样它可以在客户看到下一页时被重复使用,例如:
很遗憾,没有预先设定的规则...但是为了给你一个常识,我会说你可以轻松缓存:
你不应该缓存什么:
至于缓存持续时间,我倾向于根据数据类型和大小使用不同的持续时间。应用程序参数可以缓存数小时甚至数天。
对于某些业务数据,您可能希望具有较短的缓存持续时间(几分钟到1小时)
最后一件事是始终挑战您操作的数据量。请记住,最终用户不会同时阅读数千条记录。
希望这能给您一些指导。
很难概括这种事情。唯一的硬性规则是,除非你知道需要优化某些东西,否则不要浪费时间去优化它。然后,正确的行动方案将在很大程度上取决于您应用程序的细节。
话虽如此...我几乎总是会将全局应用程序参数缓存到一些易于使用的对象中。这当然更多是编程方便而不是优化。
我编写特定数据缓存代码的唯一一次是为一个与非常慢的会计数据库接口的应用程序,然后它只读取不经常更改的数据。所有写入都进入数据库。对于SQL Server,我从未遇到过内置的ASP.NET到SQL Server接口是方程式中的瓶颈。