`
圣诞王子
  • 浏览: 84638 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

让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回收应用程序池):

 

 

改造后:

 

 

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

 

 

分享到:
评论

相关推荐

    DNN Articles module

    考虑到性能,DNN Articles模块通常会利用缓存机制来提高页面加载速度,尤其是对于大型文章库,可以有效减少数据库查询次数,提升用户体验。 总结来说,DNN Articles模块是DNN平台上的一个强大工具,它提供了一套...

    DNN4.8安装包

    - DNN4.8.2引入了性能优化,提高了数据处理速度和用户体验。 - 更新的安全补丁增强了系统的安全性,保护网站免受攻击。 - 改进的模块化设计允许更灵活的定制和扩展,开发者可以轻松创建自定义模块。 - 提供了更...

    Telerik DNN SkinObjects Q3 2009 SP2(2010年1月14日版本)

    2. **AJAX技术**:Telerik的控件广泛使用了AJAX(Asynchronous JavaScript and XML)技术,使得页面能够在不刷新整个页面的情况下进行部分更新,从而提高了网页的响应速度和用户体验。 3. **包含的控件**: - **...

    DDSUNTOOLKIT

    5. **站点设置和管理**:可能提供了更细致的站点配置选项,如自定义权限设置、用户管理、角色管理等,让管理员能够更好地控制和调整DNN网站的行为。 6. **日志和监控**:可能集成了详细的日志记录和性能监控功能,...

    DotNetNuke.Module.Programming

    根据提供的文件信息,我们可以归纳出一系列与DotNetNuke (DNN) 模块编程相关的专业知识点。以下是对这些知识点的详细阐述: ### 一、DotNetNuke 简介 - **定义**:DotNetNuke (简称 DNN) 是一个基于 ASP.NET 的开源...

    pose_iter_160000.caffemodel

    1. **更换下载源**:寻找其他可靠的镜像站点或者云存储服务,如GitHub Release页面、国内的阿里云、腾讯云等,它们可能提供更快的下载速度。 2. **使用下载工具**:利用迅雷、IDM(Internet Download Manager)等...

    DotNetNuke 5.4 Cookbook

    - **缓存策略**:讨论如何有效地利用缓存机制提高站点的加载速度。 - **资源压缩**:介绍如何对CSS和JavaScript文件进行压缩,减少加载时间。 - **数据库优化**:提供数据库优化技巧,确保数据查询快速高效。 5....

    移动全网规划与建设-option3X业务验证.pptx

    这种方案允许终端同时利用4G和5G网络的带宽,提高数据传输速度。 业务验证是Option3X实施过程中的重要步骤,主要目的是确保网络配置的正确性和业务通道的连通性。在进行Option3x联网测试时,首先要确保终端的开卡...

    opencv3.20 lib vs2017

    此版本引入了新功能,如更高效的图像处理算法、深度学习模块(DNN)、增强现实支持以及对OpenCL的改进,使得开发者能够利用现代GPU进行并行计算,提高应用程序的运行速度。 在Visual Studio 2017中配置OpenCV 3.2.0...

    opencv-3.4.9.zip

    2. **高效性能**:OpenCV利用多核处理器和硬件加速,如GPU,来提升计算速度,尤其是在处理大型图像和视频时。 3. **丰富的功能**:包括图像处理、特征检测、物体识别、图像分割、机器学习、深度学习等多个领域,提供...

Global site tag (gtag.js) - Google Analytics