让DNN站点首页速度提高10倍

      DNN站点的速度问题让我很头疼,如果用户第一次访问站点,访问时间一般是7秒左右。如果站点的应用程序池被IIS

 

回收了,要重新编译,时间一般是10到15秒。当然打开以后再访问,由于不需要再次编译并且相关js和css文件都缓存到了

 

客户端,时间在1.5秒左右。

 

      悲催的是,我的站点大部分时间都没人访问,应用程序池被IIS回收了,好不容易有个用户访问还得现编译,大部分人

 

都等不了10几秒就把窗口关了。

 

幸亏我的站点是个人博客,无所谓。不过前几天帮朋友做了一个企业网站,这可不是小问题了啊。

 

  冥思苦想终于找到了解决办法。下面从俩方面阐述:

 

  1、IIS应用程序池的回收问题

 

  这是大部分ASP.NET站点的通病,第一次访问都很慢,不过大网站由于不断的有用户访问,不至于被IIS回收了,但小

 

网站就不行了。

 

  网上的解决办法是在Global.asax文件里的事件里加一个缓存对象,当缓存对象到期时执行回调函数访问本站点。效果

 

是每隔一段事件网站就被访问一次,不至于被IIS回收了。

 

  其实DNN本身就有调度机制,只需要实现DotNetNuke.Services.Scheduling.SchedulerClient抽象类,然后配置

 

一下就可以实现每隔一段时间访问一下自己网站的效果。

 

在DoWork方法中进行具体的操作,代码如下:  

public override void DoWork()
         {                   
             try
             {
                 System.Net.WebClient client = new System.Net.WebClient();
                 byte[] result = client.DownloadData(ScheduleHistoryItem.ObjectDependencies);
                 ScheduleHistoryItem.Succeeded = true;
             }
             catch (Exception exc) 
             {
                 ScheduleHistoryItem.Succeeded = false;
                 ScheduleHistoryItem.AddLogNote("访问页面"+ScheduleHistoryItem.ObjectDependencies+"失败!" + exc); //OPTIONAL
                 Errored(ref exc);
             }
         }

 

这个功能实现起来比较简单,就不细说了,完整的源代码和配置方法在这个页面http://www.icommon.net/DNNDownload.aspx

 

  2、首页资源的下载问题

 

  在这里我没有对整个站点的资源进行优化,只是对首页进行了优化。我觉得如果首页打开特别慢的话用户会觉得站点出

 

问题了,就直接关了。如果首页很 快就打开了,其他页面慢点也没那么大影响,至少说明站点没有问题。DNN的特点是只

 

要客户端打开过一个页面下载过一次js和css了,打开其他页面就会快 很多了。

 

  我的方法是将首页静态化,将aspx页面里的内容转换成htm页面。

 

  理想的情况是使用调度程序每隔一段时间将aspx类型的首页的内容转到一个静态文件里面。

 

  先介绍一下怎么手动改吧:

 

  首先打开首页,我的首页地址是home.aspx,在浏览器窗口右键查看源文件,复制出来,然后将里面的没有用的都删

 

掉。我发现里面的js没有 任何作用,于是都删了,页面大小从600k变为90k。将这个文件保存成htm文件,传到主机空

 

间。访问一下,和aspx的首页页面没有任何区别。你可以 对比一下我那两个页面www.icommon.net/default.htmwww.icommon.net/home.aspx

 

  下面是设置首页地址。如果你的DNN站点只有一个门户,就很简单了,在主机提供商的管理页面将站点的首页指向该

 

htm文件即可。但是,由于我的 DNN程序有两个门户在用,这样一改我的两个站点首页就变成一个了。所以还需要额外的

 

工作,以管理员身份进入DNN站点,添加一个页面例如叫做 index.aspx,配置这个页面为链接类型,然后配置301重定向

 

到刚才那个htm文件,并且设置这个index.aspx为站点的首页。这样的话, 用户输入域名后就重定向到htm文件了,而且

 

DNN里面的多个门户也互不影响。

 

  通过这两方面的改造,速度有了质的飞跃,下面是百度统计工具提供的速度测试,图片中是我的另外那个DNN门户需要用作企业站点,所以重点测了一下。

 

模拟改造前 (home.aspx是以前的首页,在web.config加个空格,强制程序再次编译,模拟IIS回收应用程序池):

 

让DNN站点首页速度提高10倍

 

改造后:

 

让DNN站点首页速度提高10倍

 

转自博客园:http://www.cnblogs.com/icommon/archive/2012/03/29/2422521.html

 

 

你可能感兴趣的:(速度)