- 30
- 11月
一直都感觉wp的效率不太行,一直没去看看到底wp那里慢了。今天有点时间就抽空让我来看看wp首页以及文章页面到底运行了哪些sql吧。
一直都是听说wp每次打开都会有大量的请求,昨天查了一下,首页有近20条的sql查询(不包括我用了memcached缓存的),文章页的话有差不多25条查询,把sql输出一下看傻了。这啥啊各种联表各种表达式。 :s1liuxue
运行wp的get_links_list()函数,监视一下sql可以看到:
SELECT * , IF (DATE_ADD(link_updated, INTERVAL 120 MINUTE) >= NOW(), 1,0) as recently_updated , UNIX_TIMESTAMP(link_updated) AS link_updated_f FROM wp_links INNER JOIN wp_term_relationships AS tr ON (wp_links.link_id = tr.object_id) INNER JOIN wp_term_taxonomy as tt ON tt.term_taxonomy_id = tr.term_taxonomy_id WHERE 1=1 AND link_visible = 'Y' AND ( tt.term_id = 2 ) AND taxonomy = 'link_category' ORDER BY link_name ASC
这句东西。就我现在这种小表都需要0.1秒的查询时间,表大了的话,会很搞笑的。所以各位用wp,而且有使用get_links_list()这个函数来获取友链的同学赶紧换其他方式吧。不要用这个函数了。
假如你的友链关系不复杂,像我一样没有做分类什么的,直接用下面这句就行了,不明白wp官方为什么会将link_visible这个字段采用字符型做记录,虽然建了索引但mysql跑去扫全表了。
select * from wp_links where link_visible='Y' order by link_name asc
于是从查询到显示,可以在页面上搞这么一段:
#global $wpdb; //这应该写不写无所谓 $links_wpdb = $wpdb->get_results("select * from wp_links where link_visible='Y' order by link_name asc"); if( $links_wpdb ) { foreach( $links_wpdb as $k=>$v ) { $tmpstr .= '< li >< a title="'.$v->link_description.'" href="'.$v->link_url.'" target="'.$v->link_target.'">'.$v->link_name.'< /a >< / li >'; //注意去掉一些地方的空格 } echo $tmpstr; }
假如你的服务器安装了memcached,那么可以这样,加了缓存减少数据库压力 :s1niuyao
#$mc = new Memcache; #$mc->connect('服务器ip', '端口号'); if( $mc ) { $tmpstr = $mc->get("mc_links"); } if( !$tmpstr ) { #global $wpdb; $links_wpdb = $wpdb->get_results("select * from wp_links where link_visible='Y' order by link_name asc"); if( $links_wpdb ) { foreach( $links_wpdb as $k=>$v ) { $tmpstr .= '< li>< a title="'.$v->link_description.'" href="'.$v->link_url.'" target="'.$v->link_target.'">'.$v->link_name.' a> li>'; } } $mc->set('mc_links', $tmpstr, MEMCACHE_COMPRESSED, 3600*24); } echo $tmpstr;
唔…以上就是做了24小时缓存的友情链接了,有个弊端就是,你现在添加的新的友链,有可能需要等待24小时才能在页面上看到。不动wp程序,不写hook,只能让他有个延迟时间了,假如希望时间短点,把上面的3600*24改成你想要的秒数即可。
好像就一条语句就能写篇博客了…那就这样吧,不写了
PS:有空得把表情处理一下,服务器链接数也好多..
PS2:小写一段,高手无视即可。
PS3:帝都怎么还不给我下雪啊!!!
20:5611月 30th, 2011
[回复]
油饼小明猪 回复:
11月 30th, 2011 at 21:04
@灰机仔,
[回复]
01:4012月 2nd, 2011
WP就是效率太差了所以一直想换成MovableType,8过那个玩意儿的教程神马的就比WP少多了于是一直狠不下心
[回复]
油饼小明猪 回复:
12月 2nd, 2011 at 20:42
@lovee, MovableType?没用过,这类东西就连wp这种大家都做成这样,估计MovableType的效率也不会太好吧..
[回复]
lovee 回复:
12月 3rd, 2011 at 01:43
@油饼小明猪, MT的最大卖点之一就是远低于WP的资源占用,而且MT不需要插件自己就支持页面静态化等等功能,事实上MT的效率还真是高于WP,包括数据库的调用等等 就是教程太少了不忍心出手
[回复]
油饼小明猪 回复:
12月 3rd, 2011 at 09:10
@lovee, 这个….你自己去看源码然后写教程吧
[回复]
lovee 回复:
12月 7th, 2011 at 02:02
@油饼小明猪, 有这个水平咱就不愁MT没有教程了
10:5612月 2nd, 2011
SQL数据库,好高深啊……
[回复]
油饼小明猪 回复:
12月 2nd, 2011 at 20:43
@Vallmo, 其实我写的东西真是一点都不深,深了没人看。
[回复]
23:2312月 5th, 2011
技术贴马克~~
[回复]
油饼小明猪 回复:
12月 5th, 2011 at 23:28
@内大臣, 马车入手了??
[回复]
内大臣 回复:
12月 5th, 2011 at 23:43
@油饼小明猪, 估计要明天才能到上海
[回复]
11:1712月 7th, 2011
所以才有很多人用缓存或静态插件…
[回复]
21:4510月 1st, 2014
国庆节了,工作总要放一下,牙还是很痛!继续努力,生活充满挑战!
[回复]