本帖最後由 hknovo 於 2013-7-15 14:43 編輯 $ u( _& n! x; q, ~$ _
$ `' Z$ b9 U y" M
網站訪問速度,也是影響GOOGLE 排名的一種因素之一。GOOGLE 還提供了 page speed 來檢測代碼。 混世魔王的英文站研究,一般都是用WP的程序。 但是,WP畢竟是BLOG,數據庫達到幾萬片文章後,就特別慢。 有的時候,為了頁面多被GOOGLE 收錄。就採用用隨機參數。 混世魔王英文站研究 之 優化wordpress mysql 的執行效率。 例如,這一段分類隨機的代碼。在只有幾百篇的文章下是執行正常的。 - <?php
- $rand_posts = get_posts("cat=" . the_category_ID(0) . "&orderby=rand&showposts=10");
- foreach( $rand_posts as $post ) :
- ?>
- <li><h3><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3></li>
- <?php endforeach; ?>
- * \) l$ k% ?) ]6 C' _! d& K9 C
* y I8 O( I( L
[color=rgb(51, 102, 153) !important]複製代碼
/ J& ^7 ~- g& \: U6 Z: n3 X& n在幾萬片文章下,服務器直接 time out 6 ]$ R; B) J, F; J4 ^1 s
4 y$ l2 @8 X& }因為之前的隨機是在幾萬篇文章中隨機的, 我們加入一個隨機值,看看下面的代碼。 - <font face="Tahoma, Verdana,">
<?php$t1=microtime(true);$rd=mt_rand(0,1000);$myposts=get_posts('numberposts=100&offset='.$rd.'&category='.the_category_ID(0));foreach($myposts as $post) :echo microtime(true)-$t1."";setup_postdata($post);?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li><?php endforeach; ?> </font>
" }% w% g/ I! C2 I7 e& w! _' q: q" g6 D6 i% ^2 S
[color=rgb(51, 102, 153) !important]複製代碼, r; a# k0 t# W: E
網站能顯示了。但是 MYSQL 的數據庫查詢值在 8 秒
* T- c- U! Y5 q& W; T' t" u
. X! a1 f8 _! D6 _4 P繼續,優化。 - <font face="Tahoma, Verdana,">
<?php$t1=microtime(true);$rand_posts = $wpdb->get_results("SELECT id,post_title FROM $wpdb->posts WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM $wpdb->posts))) ORDER BY id LIMIT 0,200");echo microtime(true)-$t1."";foreach($rand_posts as $post ){?><li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li><?php } ?> </font>
0 U8 H+ W: u; L5 V m x7 s x) ]" U7 D! }, ~. ^3 ]+ L
- G/ }! v3 x1 Y
複製代碼
U8 f# @" ?3 ~: ^3 r1 [ 可以看到,上萬的文章,隨機輸出200篇,查詢 0.02 秒。 執行效率得到大幅度提升。 - <?php! y7 G% w2 b, v2 W# v
- $t1=microtime(true);
3 u$ l! _. `- ?4 b3 \. _. Z) W - $wpcount = $wpdb->get_var($wpdb->prepare("SELECT count(*) FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish'"));
) B& Z* z- `) M) [ P2 p' I - 5 p/ _& m& M( `4 A
- $randid = mt_rand(0,$wpcount-12);: p6 l; a) `' |' V
- $myposts = $wpdb->get_results("SELECT id,post_title FROM $wpdb->posts WHERE post_type = 'post' AND post_status ='publish' and id>$randid limit 12");
( y+ D) N% F' {$ [" ~+ A% W: z - echo microtime(true)-$t1."! o/ ]# p9 s) n7 C6 {
- ";3 J4 j0 Y3 ~1 V' W6 \4 h
- foreach($myposts as $post){
6 Z( H& R6 G7 } T3 T& A - ?>
+ [: {6 [6 }; p/ _6 K2 m$ q8 ~ - <li><a href="<?php echo get_permalink($post->id); ?>" title="<?php echo $post->post_title; ?>"><?php echo $post->post_title; ?></a></li>
1 y. [( X8 \! @) d9 e0 _ - <?php6 D6 |/ a" c5 A; L& p
- }?>
複製代碼麻煩上面扣分的,把我的豬毛還來,賺兩幣容易嗎? 不加就算了,還給我減了
$ L, P) E, m; @* a+ \4 d( J8 d$ k3 ?* x/ f
|