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.htm 和www.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模块通常会利用缓存机制来提高页面加载速度,尤其是对于大型文章库,可以有效减少数据库查询次数,提升用户体验。 总结来说,DNN Articles模块是DNN平台上的一个强大工具,它提供了一套...
- DNN4.8.2引入了性能优化,提高了数据处理速度和用户体验。 - 更新的安全补丁增强了系统的安全性,保护网站免受攻击。 - 改进的模块化设计允许更灵活的定制和扩展,开发者可以轻松创建自定义模块。 - 提供了更...
2. **AJAX技术**:Telerik的控件广泛使用了AJAX(Asynchronous JavaScript and XML)技术,使得页面能够在不刷新整个页面的情况下进行部分更新,从而提高了网页的响应速度和用户体验。 3. **包含的控件**: - **...
5. **站点设置和管理**:可能提供了更细致的站点配置选项,如自定义权限设置、用户管理、角色管理等,让管理员能够更好地控制和调整DNN网站的行为。 6. **日志和监控**:可能集成了详细的日志记录和性能监控功能,...
根据提供的文件信息,我们可以归纳出一系列与DotNetNuke (DNN) 模块编程相关的专业知识点。以下是对这些知识点的详细阐述: ### 一、DotNetNuke 简介 - **定义**:DotNetNuke (简称 DNN) 是一个基于 ASP.NET 的开源...
1. **更换下载源**:寻找其他可靠的镜像站点或者云存储服务,如GitHub Release页面、国内的阿里云、腾讯云等,它们可能提供更快的下载速度。 2. **使用下载工具**:利用迅雷、IDM(Internet Download Manager)等...
- **缓存策略**:讨论如何有效地利用缓存机制提高站点的加载速度。 - **资源压缩**:介绍如何对CSS和JavaScript文件进行压缩,减少加载时间。 - **数据库优化**:提供数据库优化技巧,确保数据查询快速高效。 5....
这种方案允许终端同时利用4G和5G网络的带宽,提高数据传输速度。 业务验证是Option3X实施过程中的重要步骤,主要目的是确保网络配置的正确性和业务通道的连通性。在进行Option3x联网测试时,首先要确保终端的开卡...
此版本引入了新功能,如更高效的图像处理算法、深度学习模块(DNN)、增强现实支持以及对OpenCL的改进,使得开发者能够利用现代GPU进行并行计算,提高应用程序的运行速度。 在Visual Studio 2017中配置OpenCV 3.2.0...
2. **高效性能**:OpenCV利用多核处理器和硬件加速,如GPU,来提升计算速度,尤其是在处理大型图像和视频时。 3. **丰富的功能**:包括图像处理、特征检测、物体识别、图像分割、机器学习、深度学习等多个领域,提供...