在最近的ASP.NET项目中,我们在测试期间发现系统性能低下。最开始我们怀疑是由于使用了过多的UserControl所致。但是由于这已经是项目晚期,已经不可能再推翻以往的设计架构重来。所以我们不得不寻找其它可以改善性能的方法。
刚开始我们使用缓存来进行改善。但是我们的页面中大量的数据都是随时变化的,.net framework不够精确的缓存命中率给我们的数据一致性表现带来尴尬的处境。
其次Viewstate的优化似乎也没有什么效果,可以优化的地方少之又少。
唯一可以做的便是将大量页面的SessionState改为ReadOnly,因为我们需要在处理过程中使用Session进行用户效验。
最后我们不得不从后台处理来考虑。我们发现后台的服务类以及业务逻辑被频繁调用,所以我们使用Singleton模式将底层业务逻辑类和工具类进行了重构,发现性能大幅提升。虽然有人说Singleton的一个缺点便是每次都需要检查类是否创建,这会消耗资源。但是检查所消耗的资源总比创建要小得多吧,何况不会无止境的吞噬宝贵的内存。
这次的经历告诉我们一个教训:良好的结构将会保证系统的稳定性和性能。
刚开始我们使用缓存来进行改善。但是我们的页面中大量的数据都是随时变化的,.net framework不够精确的缓存命中率给我们的数据一致性表现带来尴尬的处境。
其次Viewstate的优化似乎也没有什么效果,可以优化的地方少之又少。
唯一可以做的便是将大量页面的SessionState改为ReadOnly,因为我们需要在处理过程中使用Session进行用户效验。
最后我们不得不从后台处理来考虑。我们发现后台的服务类以及业务逻辑被频繁调用,所以我们使用Singleton模式将底层业务逻辑类和工具类进行了重构,发现性能大幅提升。虽然有人说Singleton的一个缺点便是每次都需要检查类是否创建,这会消耗资源。但是检查所消耗的资源总比创建要小得多吧,何况不会无止境的吞噬宝贵的内存。
这次的经历告诉我们一个教训:良好的结构将会保证系统的稳定性和性能。