优化DOTTEXT之一:缓存配置项

本文介绍通过缓存频繁访问的配置项来提升DotText博客系统的性能。通过对BlogConfigurationSettings和HandlerConfiguration进行缓存优化,实现了首页加载速度提高2.3倍的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在开发博客,于是想到了OPENSOURCE的DOTTEXT,下载了装好后,感觉功能很完善,所以打算在其基础上建立BLOG SITE。感谢http://www.cnblogs.com/,我装的是CNBlogsDottext10Beta2版本。

我觉得一个BLOG SITE最重要的功能是:

1 换肤功能

2 RSS功能

3 TRACKBACK

在FIX、PERFORMANT以及LOCALIZATION过程中,感觉DOTTEXT的性能比较低,经分析后发现:

对于大量的访问CONFIG配置文件的操作,DOTTEXT并没有提供缓存机制。比如首页,大约有三十次访问BlogConfigurationSettings,而这全部都要执行以下代码:

public static BlogConfigurationSettings Instance()
  {
 return ((BlogConfigurationSettings)ConfigurationSettings.GetConfig("BlogConfigurationSettings"));
  }

类似的还有 HTTP链接动态生成,每次都要由 UrlReWriteHandlerFactory 对REQUEST链接进行分析,这个过程要遍历HttpHandlers,而取得HttpHandlers要执行以下方法:  

public static HandlerConfiguration Instance()
  {
   (UrlManager.HandlerConfiguration)ConfigurationSettings.GetConfig("HandlerConfiguration");  }

我们看到,每次访问配置项,都要从CONFIG文件中读取,而且每次都要进行装箱的操作。

为了解决以上问题,我在Dottext.Framework命名空间中建立了CATCHER类来缓存配置项。这是个单例类,代码如下:

using System;
using System.Configuration;
namespace Dottext.Framework
{
 /// <summary>
 /// 作者:丁冬
 /// 时间:2006-02-24
 /// 说明:将配置项缓存
 /// </summary>
 public class Catcher
 {
  private Catcher()
  {
  }
  private static Configuration.BlogConfigurationSettings _BlogConfigurationSettings = null;
  /// <summary>
  /// 缓存BlogConfigurationSettings
  /// </summary>
  /// <returns></returns>
  public static Configuration.BlogConfigurationSettings GetBlogConfigurationSettings()
  {
   if(_BlogConfigurationSettings == null)
    _BlogConfigurationSettings = (Configuration.BlogConfigurationSettings)ConfigurationSettings.GetConfig("BlogConfigurationSettings");
   return  _BlogConfigurationSettings;
  }
 }
}

相应的,将BlogConfigurationSettings 类的INSTANCE方法改为:

public static BlogConfigurationSettings Instance()
  {
   return Catcher.GetBlogConfigurationSettings();
  }

这样,每次访问Dottext.Framework.Configuration.BlogConfigurationSettings Instance(),都先去缓存中提取,如果为NULL,则再去读配置文件。

同样的,我在Dottext.Common.UrlManager命名空间中也建立了一个CACHER类,来缓存HandlerConfiguration配置项。之所以不把他们放在一个CATCHER类里,是为了避免装箱操作。

优化后,我以首页为例进行优化前后的对比,结果如下:

Application Center Test

概述: 摘要

 

(1)测试名称:ACTSamples: 新BLOG
测试运行名称:report-新BLOG-二月 25, 2006 10-51-30
测试开始时间:2006-2-25 10:50:28
测试持续时间:00:00:01:00
测试迭代次数:3,760
测试说明:-
(2)测试名称:ACTSamples: 老Blog
测试运行名称:report-老Blog-二月 25, 2006 10-52-40
测试开始时间:2006-2-25 10:51:38
测试持续时间:00:00:01:00
测试迭代次数:1,661
测试说明:-

测试运行图形

9.0.0.64301524010160 '> 9.0.0.64301524010160 '>



属性
 (1)(2)
测试类型:动态动态
浏览器同时连接数:2020
准备时间(秒):
测试持续时间:00:00:01:0000:00:01:00
测试迭代次数:3,7601,661
生成的详细测试结果:
 
摘要
 (1)(2)
请求总数:3,7621,663
连接总数:3,7601,661
 
每秒平均请求数:62.7027.72
首字节平均响应时间(毫秒):298.10691.10
末字节平均响应时间(毫秒):299.60693.47
每次迭代末字节平均响应时间(毫秒):299.76694.30
 
测试中的唯一请求数:11
唯一响应代码数:11
 
错误计数
 (1)(2)
HTTP:
DNS:
套接字:
 
其他网络统计数据
 (1)(2)
平均带宽(字节/秒):1,182,812.80510,220.68
 
发送字节数(字节):1,437,970624,866
接收字节数(字节):69,530,79829,988,375
 
发送字节平均速率(字节/秒):23,966.1710,414.43
接收字节平均速率(字节/秒):1,158,846.63499,806.25
 
连接错误数:
发送错误数:
接收错误数:
超时错误数:
 
响应代码
 (1)(2)
Response Code: 200 - 请求已成功完成。
计数:3,7621,663
百分比(%):100.00100.00

 

可以看到,效率提高了2。3倍。

以上我缓存的只是访问比较频繁的两个配置项,我们可以将所有的配置都缓存。以使DOTTEXT性能达到最优。

转载于:https://www.cnblogs.com/jasononline/archive/2007/06/01/767215.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值