很多人说DEDE后台生成文章的速度太慢,1万篇文章居然用了几个小时。有些说10万篇文章整个晚上还没生成完。这样很影响网站维护效率。
想让DEDE的生成文章速度提高,需要先了解DEDE在生成文章过程中都做了哪些事、涉及到哪些代码和数据。
从includearc.archives.class.php文件细细看,DEDE大概做了这几件事:
1、调出文章的全部数据,包括AID、栏目ID、标题、作者、时间等,一部分数据待用,一部分赋值到前台显示。
2、判断文章所用的模板。
3、调用文章的附加数据,最主要是文章内容。如果是分类信息,则调出所有字段内容。
4、处理文章内容中的图片,加alt值,调用缩略图。
5、判断文章是否有分页。
6、调取文章的TAG和TAG的链接。
7、获得上一篇、下一篇文章的ID、标题、链接。
8、获得相关文章的ID、标题、链接。
9、替换文章中的关键词。
前面5个步骤都是必须的,也用不了多少资源,不用管,也无法做优化。调取TAG也是必须的,一般只有三四个TAG,也是费不了多少资源。上一篇、下一篇及相关文章有点耗资源,尽量把范围缩小一点好。比如不要上下篇,相关文章仅限于本栏目,可以提高查询速度。
最耗资源的是文章中的关键词替换。默认的替换程序是先判断TAG,如果有TAG,就按TAG选择关键词,再替换。这个方式很多站长都不喜欢,因为替换范围太有限了。如果没设置TAG,就不会替换。如果把代码修改为跟TAG无关,只要文章中的词汇与预先设置的关键词表匹配就替换,那查询量就非常大:要先把整个关键词表调出来,然后每个词与整篇文章匹配一遍,配上就替换,否则就不替换。如果后台设置了1000个关键词,那这篇文章在生成静态的过程中,就重复判断1000次才完成。如果要生成1万篇文章,那么光关键词替换这里,就要判断1000万次,速度被拖得非常非常慢。如果关键词设置得更多,则速度更慢。
为什么替换文章中的关键词?基本上都是为了SEO,让蜘蛛多爬一些页面。但不是说你设置了链接,蜘蛛就会乖乖的个个都去爬的。如果是相关性不太大的页面,还会产生负作用。我感觉一篇文章有TAG、相关文章这两项,就已经足够了,不需要添加更多的关键词链接。
所以我现在已经禁止了关键词替换(后台可选择),然后再生成文章,速度就非常快。1398 总用时:1.95 分钟,照此推算,生成1万篇文章最多20分钟,10万篇也就三个多小时。