动易性能优化完全手册
性能优化原则:性能和功能从来都是矛盾的,在这里我们需要的是性能优化,所以我们将尽可能放弃某些功能。以下性能优化方法全部是从动易系统本身来讲的,不涉及到HTML等网页代码的优化。
一、前台全部生成HTML,尽可能不要使用收费功能。无论如何,首页一定要生成HTML。
众所周知,ASP方式再快再怎么优化,也快不过HTML。虽然网站在生成HTML时会比较占用服务器资源,但HTML页面一旦生成后,就不再需要访问数据库,速度几乎不再受服务器的性能影响,而只与网络带宽有关,所以我们一定要尽可能的生成HTML。生成HTML还有许多好处,比如更利于搜索引擎收录等,这里就不多说了。动易系统可以将网站首页、频道首页、栏目列表页、内容页全部生成HTML,并且提供了多达15种目录结构方式,大家一定要尽可能的使用这个功能。动易系统生成的HTML页面,除了内容页的点击数和评论两个功能外,可以完全独立于数据库之外运行。也就是说,如果你不要显示点击数和相关评论以及搜索功能的话,完全可以在自己电脑上生成HTML,再FTP上传到网站服务器上(服务器上不需要数据库),实现真正的“全静态”网站。
如果你的网站是收费网站,也请启用生成HTML功能,动易会自动进行判断,对有权限设置的栏目和文章,会不生成HTML,自动改为ASP方式。这些情况下,我们仍可以将网站首页、频道首页等生成HTML,以减轻服务器的压力。
如果你的网站的收费内容比较多,或者全部是收费内容,那只有一个建议:升级服务器硬件配置,比如升级到双至强3.0G+4G内存+三个SATA 160G硬盘组成Raid5的磁盘陈列。
二、模板尽可能的简单。
许多网站特别喜欢在首页放上一大堆内容,做得好像是新浪和网易首页一样。这一点抛开其他不谈,就性能上来说,肯定是非常消耗资源的。大家在设计首页模板时,首页基本上调用众多{$GetArticleList(***)}等超级函数标签来做的,而这些超级函数标签,每一个都至少需要查询一次数据库,多时可能会有几十次。大家可想而知,当你在一个页面查询了几十次甚至上百次数据库,这个页面还有性能而言吗?
正确的做法是:网站首页和频道首页使用{$GetArticleList(***)}等超级函数标签的数量尽可能不要超过10个。栏目页和内容页尽可能只有一个超级函数标签。
三、{$GetArticleList(***)}、{$GetPicArticle(***)}等标签调用时尽可能指定频道和栏目,尽量不要调用所有频道或所有栏目的内容。
前面说到{$GetArticleList(***)}这些超级函数标签,每一个标签都需要至少查询一次数据库。这一点有些编程基础的网友应该非常容易明白。但为什么在标签调用时要指定频道和栏目呢?这是因为,如果不指定频道,也就是让系统从所有频道中查询内容,而动易的设计是每个频道都可以设置是否生成HTML和目录结构等许多设置,这样当我们查询出来的文章不在同一个频道时,就需要得到每篇文章的所属频道的这些设置,并根据这些设置来确定最后的文章内容页地址,其间可能会引发几十次查询,性能当然低了又低。
四、尽量不要使用“全站专题”功能。
这个说法的原理和上面第三点的原理是一样的。所谓全站专题,当然是一个专题下可能有不同频道的文章存在,这样在全站专题页面中,为了得到每个文章的内容页地址,都需要查询文章所属频道的设置,其间也可能引发几十次数据库查询。说到这里可能有些懂编程的网友会问了,为什么不使用联合查询等优化方法呢?这里告诉大家,我们已经尽可能的用了联合查询等优化方法,已经在三个表甚至四个表之间进行联合查询,同时还考虑了同一频道同一栏目同一专题下的文章列表时的优化查询方法,查询代码的生成算法非常复杂了。
五、尽量不要使用“自定义字段”功能。
自定义字段功能是为了解决动易系统不能满足用户的需求时能够自己添加部分简单功能的变通解决方法,这个功能肯定会引起性能上的降低,所以如果不到万不得已,请大家不要使用这个功能。
六、“自定义静态标签”的数量不要太多。
自定义静态标签使许多人都享受到模板设计与修改时非常方便的优势。但有些网友把这个功能用得过了头了,竟然定义了几百个甚至上千个“自定义静态标签”,这样会引起性能的急剧下降。因为系统在解析模板时,会将所有“自定义静态标签”查询出来并进行解析,想一想,如果有1000个“自定义静态标签”,则不仅要把这1000条标签记录查询出来,还要对模板进行1000次替换操作,这将消耗多少计算资源?
七、尽量不要使用“自定义动态标签”、“自定义页面”功能。
这两个功能可以极大的拓展动易系统的灵活性,但同样的会带来性能上的损失。并且这两个功能的使用需要用户具备相当的编程知识后才能使用,许多人却不管3721,也不管自己的水平,系统有这个功能就要用。在做技术支持过程中,有一个用户向我们反映动易2006非常慢,并且严重占用内存,还一口咬定是动易的问题,最后经过我们排查,发现他自己定义的一个自定义动态标签中,竟然对一个有10万条记录的表使用了“select * from aaaa order by id”这样的查询语句,然后在首页将数据分页显示出来。我们将这个自定义动态标签删除后,速度马上提高N倍,内存占用恢复到正常水平。所以说这个功能不是普通用户可以使用的,这个功能其实因为直接数据库打交道,涉及的许多性能优化问题,一不小心就会让系统变慢N倍而不自知,另外,在可以达到相同效果的前提下,建议用户尽量多使用自定义动态标签,而少使用自定义函数标签,因为系统对自定义动态标签进行了缓冲优化,可以加快访问速度。
八、不要使用JS文件,扩展名改为shtml,在模板中使用Shtml提供的包含文件功能来代替JS文件。
动易的JS文件都是在添加或修改文章时自动生成的静态JS文件,这样当在其他文件中调用这些JS文件时,对服务器的性能几乎没有影响。但众所周知,JS文件不能直接显示在客户端上,客户端还需要将JS代码进行运算才能显示最后的结果,这样当一个页面中调用了多个JS文件时,虽然对服务器性能没有影响,但客户端打开页面的速度就会比纯HTML慢了不少。而SHTML包含文件则是在服务器端进行合并的,发送到客户端的是纯HTML代码。所以解决方法是将JS文件的输出方式改为HTML,其他文件的扩展名改为SHTML,并在模板将原来的类似于这样的调用代码改成这样的SHTML包含代码。
九、尽量将模板及标签的输出方式改为Div+CSS方式。
众所周知,Div+CSS方式与传统的Table布局方式相比较,前者在许多情况的代码量少,在客户端的解析速度快,而后者在一些细节效果方面的灵活度比较好,所以我们一般是使用Div+CSS来完成整个网站的大布局,使用Table来做细节的效果。动易2006的众多标签已经支持Div+CSS输出了。有能力的网友,大胆的将模板改成Div+CSS方式吧。动易官方站的一些频道就是用Div+CSS来做的,大家可以参考一下:http://www.powereasy.net/PowerEasy/Index.html
十、注意文章采集项目中,“关键字”设置。
关键字功能是用于在一篇文章中显示“相关文章”的,某篇文章的关键字越多,相关文章越多,不过查询时的速度也越慢。许多站长在设置文章采集项目时,为了方便,在设置“关键字”这一项时,直接设置为“将标题拆分成关键字”这种方式,结果导致每篇文章可能有10几个关键字,这样在查询相关文章时,会引起严重的性能下降。
十一、尽量减少“站内链接”的数目。
通过站内链接,我们可以方便的在文章内容中自动的将相关关键字加上链接,会大大增强网站内容间的关联度。但站内链接的数目不宜过多,否则会引起严重的性能下降。这个功能和自定义标签一样,在生成每篇文章时,要对文章内容进行替换操作,如果站内链接数量过多,就会因为替换次数太多而引起性能下降问题,如确实需要很多的替换内容,请尽量减少替换次数,比如可以设置为“替换1次”,而不使用全文替换。
十二、尽量不要使用文章内容“自动分页功能”,改为“不分页”或“手动分页”。
自动分页的算法非常复杂,动易2006中有近千行代码来对自动分页过程中的各种边界问题进行判断,但这仍然会出现许多程序员考虑不周的情况,从而导致分页效果不理想,特别是在一些排版格式复杂的文章中,自动分页的效果不理想。另外,如果文章内容比较大,而自动分页功能可能会引起性能问题。
十三、把数据从ACCESS导入到SQL时,绝对不能使用SQL自带的“导入/导出功能”,而是使用动易提供的数据迁移工具。
我们从数据库查询数据时,查询的性能除了和查询语句的优化有很大关系外,还和数据库结构设计有很大关系,特别是表的主键、索引的合理设计密切相关。动易官方的数据库对此已经做了许多优化,不用担心这些设计。但我们在使用SQL自带的数据导入/导出功能时,会丢失数据库中的主键、索引等数据约束条件,这样导入的数据虽然也能“正常”查询,但查询可能是动易原始数据库的几倍之多。为此,动易专门提供了一个数据迁移工具。所以大家在把ACCESS中的数据迁移到SQL中时,一定要使用动易提供的数据迁移工具。
十四、尽量将搜索间隔时间设置得大一些
十五、删除无用的模板方案和模板。删除无用的风格
无用的模板方案会占用大量的数据库空间,在查询时也会占用更多资源。所以对于不必要的模板方案、模板、风格,我们一定要坚决的删除掉。动易提供的官方数据库为了让大家有更多的模板使用,放了4套模板方案,另外在下载中心还提供了40多套模板,当你选定好自己中意的模板方案后,对于其他模板一定要坚决的删除掉。
十六、栏目导航不要使用“无级下拉菜单”,改为使用“普通菜单”或“无菜单”方式
动易默认的“无级下拉菜单”提供的效果非常漂亮,但客户端要实现这些效果需要非常大的计算量,当栏目比较多后,配置差点的电脑打开网站时,将会因为IE长时间运算这个菜单的显示效果而导致打开速度非常慢。所以为了性能,请大家不要使用这个菜单效果,最好是改为使用“无菜单”效果,或者干脆自己定义一个自定义标签,用纯HTML代码。
十七、不要使用动易自带的网站统计功能
众所周知,网站统计功能是非常占用资源的,动易的网站统计功能也不例外。现在网上有许多免费的网站统计服务,如Google、CNZZ,我们为什么不用这些免费的统计服务,而让自己的网站再增加一个极占资源的功能。
十八、更改自动刷新短消息时间
默认模板的“用户登录”的自定义标签里,将“LoadUserLogin('{$InstallDir}',0,2)”都改成“LoadUserLogin('{$InstallDir}',0,1)”。
用户短消息弹出窗口设置参数,参数“1”表示用户进行会员中心弹出未读短信息窗口,即系统不自动刷新,只有会员登录会员中心时或但手动刷新页面系统才检测是否有短消息,若有则弹出短消息窗口,登录后若不刷新页面,即使在登录的状态有人发短消息给会员,也不会自动弹出短消息窗口。参数“2”表示用户登录成功后系统自动刷新,如果在会员在登录的状态,有人发短消息给会员,系统将20秒一次刷新检测是否有短消息,如果有则在用户状态框实时显示短消息列表,但不弹出短消息窗口,本参数比较消耗服务器。
参数“2”的功能是给企业内部服务器或独立服务器的用户使用,因为是实时查询数据状态;参数“1”的功能则是与2005一样的短消息模式,推荐普通用户使用。因此非内网或其他特殊需求的不要将参数设置为“2”,将改为“1”。
评论前必须登录!
注册