本帖最後由 hknovo 於 2013-7-15 14:43 編輯
! d2 _0 |8 O: f- ~, L
; k: z; ?' I1 W+ i$ Q% `& h* N7 [網站訪問速度,也是影響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; ?>
- # Y: R* ]& _: s* w( u
4 G0 d, x2 E1 U6 s+ L8 i r
[color=rgb(51, 102, 153) !important]複製代碼
" j% Z4 ^2 `/ |, B' x$ _ k9 U在幾萬片文章下,服務器直接 time out , L$ |" A! [$ l5 z# S! m) d" z" d. d1 D
( m; _" u6 s; U- E7 j: r. 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>
7 y3 K; y5 M4 u, C" N3 g2 o
9 p% F2 |1 \4 v {[color=rgb(51, 102, 153) !important]複製代碼1 H6 Z: n( A: v% `7 p; U2 g1 Q$ R
網站能顯示了。但是 MYSQL 的數據庫查詢值在 8 秒
5 v1 V( e+ s# E
" r" O" ?% J8 `% \3 c) K4 j' Y2 }繼續,優化。 - <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>, |. `) t& N4 h, ~" M
/ E" {' p4 }. }% o, s) E. P6 X* r/ `" F
複製代碼
( ~: {- B7 `2 r) j; [0 q 可以看到,上萬的文章,隨機輸出200篇,查詢 0.02 秒。 執行效率得到大幅度提升。 - <?php
6 f) X# O5 L. N6 W7 r" g5 B- ^; B - $t1=microtime(true);, l& ~' f, q& `$ Q. D
- $wpcount = $wpdb->get_var($wpdb->prepare("SELECT count(*) FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish'"));
1 ~% K( _& ~* f; Z! F5 v
" y# Y% E3 a' J0 t3 U- $randid = mt_rand(0,$wpcount-12);
! c' N |* }: [) Q* D - $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 y" k+ M5 ]* d$ X: ]7 n+ W8 u
- echo microtime(true)-$t1."0 y B" |' p0 O9 C" u! ?* x2 C6 M
- ";& e9 Z; T+ L6 _
- foreach($myposts as $post){
" U; }4 w! r I+ c5 o - ?>
) ^, y7 E3 V' H2 I - <li><a href="<?php echo get_permalink($post->id); ?>" title="<?php echo $post->post_title; ?>"><?php echo $post->post_title; ?></a></li>+ o* ~$ O& ?: u
- <?php9 _7 Q* `6 Y+ P
- }?>
複製代碼麻煩上面扣分的,把我的豬毛還來,賺兩幣容易嗎? 不加就算了,還給我減了 , R$ R* v4 |6 O
5 X2 y: |6 J: @) Z8 e |