你不得不看:我所知道Typecho的各种缺陷
发表于 : 2014年 3月 7日 20:48
写在前面:这是我对Typecho的个人看法,纯属个人意见,也是希望typecho能够越办越好,虽然现在我已经不用typecho了...
我们在设计一个单用户blog系统时,我们要时刻把*单用户*这三个字放在心上.单用户意味着数据的查询是很集中的,当一个用户页面的访问量比较小时,他几乎感觉不到这多出的几次查询带来多少延迟.而当访问量比较大时,他必然有实力去升级他的系统...
上面是typecho的原话,觉得有点不负责任的。因为是单用户,所以不论效率如何槽糕都不去理会,最终留下一句:他必然有实力去升级他的系统。wordpress虽然对数据库的查询也比较多,但是在WP2.x版本,缓存时内置的,后来才被移除,直到现在WP仍旧有各种缓存插件,typecho呢?别提插件,缓存机制都没有...
好了,回到正题吧。
缺陷1:RSS头信息
我不知道使用typecho的博主都不关心RSS还是我没研究透彻,反正这个问题已经存在很久很久了。RSS的头信息中的Content-Type的标准是application/rss+xml,但是标准不顶用啊,这种mime类型在互联网上的RSS阅读没问题,类似QQ订阅这种是直接抓取,因此mime类型的设置关系不大,但是如果我想要在浏览器上订阅RSS,那么麻烦就来了。我试过各种支持RSS订阅的浏览器,如果mime类型设置为application/rss+xml,那么浏览器会把页面作为文件下载,根本无法实现RSS订阅的功能。将mime类型设置为text/xml不是挺好么?
缺陷2:数据调用,这是我最不能容忍的
一个列表页,只输出栏目列表和文章列表,你知道会查询多少次数据库吗?我们来算一算:
首先调用全局参数:
SELECT * FROM typecho_options WHERE (`user` = 0 )
然后判断分类是否存在:
SELECT * FROM typecho_metas WHERE (`type` = 'category' ) AND (`slug` = '分类别名' ) LIMIT 1
然后调用分类列表
SELECT * FROM typecho_metas WHERE (`type` = 'category' ) ORDER BY typecho_metas.`order` ASC
好,才3次,没问题啊,重点不在这里!假如你设置的是每一页调用15篇文章,那么最基础的查询次数是1+15,也就是16次,然后如果你在列表中输出了作者信息,那就是1+15*2,也就是31次。一个非常简单的页面,查询数据库的次数达到34次。服务器性能差一点,你的并发一高,那么你的博客就被判死刑了。要是你的模板复杂一些,数据调用更多一点,那么搞死你的博客就是分分钟的事情....
最不能容忍的是,如果在列表中输出了作者信息,假如所有文章都是由你自己发布,那么:
SELECT * FROM typecho_users WHERE (`uid` = '1' )
这条语句也会被执行15次!搞个数组存一下不行么?非要重复地去查询数据库,数据库本身是有缓存,但程序怎么不处理?
不是说好的吗?"我们要时刻把*单用户*这三个字放在心上",但是你搞出了多用户,好吧,你做了多用户,那么你就不要支持在列表页显示作者信息啊,支持了却这样毛毛躁躁地进行数据处理,这样负责么?
缺陷3:功能隐藏?
不知道是不是typecho是协作开发的原因,还是其他原因,反正一些功能貌似太监了。我在阅读typecho代码的时候发现搜索有一个定义搜索的功能,但是这个功能我在后台并没有发现,也没有在相关文档中找到设置的方法,也没有去深究怎么回事儿...
反正还有其他一些毛病吧,写这么多也差不多了。基于种种原因,花了两天时间,全新开发了一套系统,将typecho平滑替换...php处理耗时由平均0.46秒提升到0.005秒,提高了9倍多,平均一个页面查询数据库的次数为1.4次,增加缓存机制,系统负载至少提升10倍。当初选择typecho是因为她轻盈如同少女,没有wordpress那么臃肿不堪,现在我觉得毕竟产品的用户不多,小众,我可以理解,但是没有我想象的那么好。
我的站点:http://13changyou.com/,欢迎大家吐槽,我原本还发布了一篇内容,现在看来也没意义了,毕竟不再使用typecho了....
大家的评论我看到了,大家这么调侃,也把我逗笑了,哈哈。
我说的的确是事实,平滑替换了typecho,但是希望大家考虑到一些原因:开发是针对性开发,不用为任何人做任何兼容处理,因为只是为自己写的。因此,没有插件、没有各种选项、没有各种其他任何需要包容其他用户的东西....把这些除开之后,博客系统就简单得不能再简单,然后再增加一个缓存机制即可。所以不是我自我感觉良好,而是我写的东西真心就这样而已,只是没有说清楚,让大家曲解了我的意思。。。。
我对typecho仍旧持有非常好的评价,因为这是一个博客系统,我之所以不用,是因为我的站不是一个博客...哈哈。
我们在设计一个单用户blog系统时,我们要时刻把*单用户*这三个字放在心上.单用户意味着数据的查询是很集中的,当一个用户页面的访问量比较小时,他几乎感觉不到这多出的几次查询带来多少延迟.而当访问量比较大时,他必然有实力去升级他的系统...
上面是typecho的原话,觉得有点不负责任的。因为是单用户,所以不论效率如何槽糕都不去理会,最终留下一句:他必然有实力去升级他的系统。wordpress虽然对数据库的查询也比较多,但是在WP2.x版本,缓存时内置的,后来才被移除,直到现在WP仍旧有各种缓存插件,typecho呢?别提插件,缓存机制都没有...
好了,回到正题吧。
缺陷1:RSS头信息
我不知道使用typecho的博主都不关心RSS还是我没研究透彻,反正这个问题已经存在很久很久了。RSS的头信息中的Content-Type的标准是application/rss+xml,但是标准不顶用啊,这种mime类型在互联网上的RSS阅读没问题,类似QQ订阅这种是直接抓取,因此mime类型的设置关系不大,但是如果我想要在浏览器上订阅RSS,那么麻烦就来了。我试过各种支持RSS订阅的浏览器,如果mime类型设置为application/rss+xml,那么浏览器会把页面作为文件下载,根本无法实现RSS订阅的功能。将mime类型设置为text/xml不是挺好么?
缺陷2:数据调用,这是我最不能容忍的
一个列表页,只输出栏目列表和文章列表,你知道会查询多少次数据库吗?我们来算一算:
首先调用全局参数:
SELECT * FROM typecho_options WHERE (`user` = 0 )
然后判断分类是否存在:
SELECT * FROM typecho_metas WHERE (`type` = 'category' ) AND (`slug` = '分类别名' ) LIMIT 1
然后调用分类列表
SELECT * FROM typecho_metas WHERE (`type` = 'category' ) ORDER BY typecho_metas.`order` ASC
好,才3次,没问题啊,重点不在这里!假如你设置的是每一页调用15篇文章,那么最基础的查询次数是1+15,也就是16次,然后如果你在列表中输出了作者信息,那就是1+15*2,也就是31次。一个非常简单的页面,查询数据库的次数达到34次。服务器性能差一点,你的并发一高,那么你的博客就被判死刑了。要是你的模板复杂一些,数据调用更多一点,那么搞死你的博客就是分分钟的事情....
最不能容忍的是,如果在列表中输出了作者信息,假如所有文章都是由你自己发布,那么:
SELECT * FROM typecho_users WHERE (`uid` = '1' )
这条语句也会被执行15次!搞个数组存一下不行么?非要重复地去查询数据库,数据库本身是有缓存,但程序怎么不处理?
不是说好的吗?"我们要时刻把*单用户*这三个字放在心上",但是你搞出了多用户,好吧,你做了多用户,那么你就不要支持在列表页显示作者信息啊,支持了却这样毛毛躁躁地进行数据处理,这样负责么?
缺陷3:功能隐藏?
不知道是不是typecho是协作开发的原因,还是其他原因,反正一些功能貌似太监了。我在阅读typecho代码的时候发现搜索有一个定义搜索的功能,但是这个功能我在后台并没有发现,也没有在相关文档中找到设置的方法,也没有去深究怎么回事儿...
反正还有其他一些毛病吧,写这么多也差不多了。基于种种原因,花了两天时间,全新开发了一套系统,将typecho平滑替换...php处理耗时由平均0.46秒提升到0.005秒,提高了9倍多,平均一个页面查询数据库的次数为1.4次,增加缓存机制,系统负载至少提升10倍。当初选择typecho是因为她轻盈如同少女,没有wordpress那么臃肿不堪,现在我觉得毕竟产品的用户不多,小众,我可以理解,但是没有我想象的那么好。
我的站点:http://13changyou.com/,欢迎大家吐槽,我原本还发布了一篇内容,现在看来也没意义了,毕竟不再使用typecho了....
大家的评论我看到了,大家这么调侃,也把我逗笑了,哈哈。
我说的的确是事实,平滑替换了typecho,但是希望大家考虑到一些原因:开发是针对性开发,不用为任何人做任何兼容处理,因为只是为自己写的。因此,没有插件、没有各种选项、没有各种其他任何需要包容其他用户的东西....把这些除开之后,博客系统就简单得不能再简单,然后再增加一个缓存机制即可。所以不是我自我感觉良好,而是我写的东西真心就这样而已,只是没有说清楚,让大家曲解了我的意思。。。。
我对typecho仍旧持有非常好的评价,因为这是一个博客系统,我之所以不用,是因为我的站不是一个博客...哈哈。