本帖最後由 hknovo 於 2013-7-15 14:43 編輯
, `* \! X5 m ?/ N! |3 Z/ s# H
; L; o; [; j: b3 k網站訪問速度,也是影響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, B3 _# @* a
7 Y2 ?& V- F2 Y: b+ h( ^4 v[color=rgb(51, 102, 153) !important]複製代碼
: ]1 y$ ] j( I1 C在幾萬片文章下,服務器直接 time out % o. y( I% z$ w/ w0 a
* j9 M% d- q4 n+ k( Z
因為之前的隨機是在幾萬篇文章中隨機的, 我們加入一個隨機值,看看下面的代碼。 - <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>& h5 p3 Q( I3 n
6 s% P4 c. \5 _ D[color=rgb(51, 102, 153) !important]複製代碼$ {" Y# k0 R# H# Q& b9 A$ _) `
網站能顯示了。但是 MYSQL 的數據庫查詢值在 8 秒
, ?$ P+ ]! H" Q1 O8 ]6 J
8 l }7 q( `* m1 `% C繼續,優化。 - <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>( o, {- b& ^) y. T5 H! _
# v& M4 V& A9 @4 D/ g1 F. u) N p8 c7 C6 w# H+ W* H# t
複製代碼
1 O- I3 |( c5 G 可以看到,上萬的文章,隨機輸出200篇,查詢 0.02 秒。 執行效率得到大幅度提升。 - <?php
0 ?% r8 n! X) \- h k - $t1=microtime(true);
2 |* u7 O' v1 r1 \ - $wpcount = $wpdb->get_var($wpdb->prepare("SELECT count(*) FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish'"));2 ?2 l* n" Y% p9 y0 p/ o
- ) R! U6 T ` @0 N6 S) ~
- $randid = mt_rand(0,$wpcount-12);
! t/ u2 A l% I1 F- k. E - $myposts = $wpdb->get_results("SELECT id,post_title FROM $wpdb->posts WHERE post_type = 'post' AND post_status ='publish' and id>$randid limit 12");
5 ?# E4 f7 }# j. i, f4 A - echo microtime(true)-$t1."( R& `/ N' R/ ~) ], E
- ";
7 N! [# u9 v1 w - foreach($myposts as $post){
) x8 V% C% N1 R; X - ?>
& H$ q- {$ ]6 l. o( b - <li><a href="<?php echo get_permalink($post->id); ?>" title="<?php echo $post->post_title; ?>"><?php echo $post->post_title; ?></a></li>
! O% Z0 ]+ \3 [! b8 B. X! f - <?php: R& t: _6 h% P& K$ _
- }?>
複製代碼麻煩上面扣分的,把我的豬毛還來,賺兩幣容易嗎? 不加就算了,還給我減了 6 W$ B1 g6 o! w( j
. G$ V# s9 x/ q# I
|