本帖最後由 hknovo 於 2013-7-15 14:43 編輯
- E/ K) x' Y- v; u3 v% U$ J) L4 D. W1 S# r( l2 q
網站訪問速度,也是影響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; ?>
7 [/ ^/ |, u B+ i/ z4 _; L 4 _) S2 U4 ]+ |7 W+ R4 p& |6 \ y
[color=rgb(51, 102, 153) !important]複製代碼
* g: e/ y. m3 k在幾萬片文章下,服務器直接 time out ' A) T% @8 n1 r1 r1 p
" g% j0 h2 p! D+ I B因為之前的隨機是在幾萬篇文章中隨機的, 我們加入一個隨機值,看看下面的代碼。 - <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>* k& f0 g7 e, \( f; A3 b- Y( R
5 I% a; f: }. J3 G3 h6 R[color=rgb(51, 102, 153) !important]複製代碼' o/ c0 \# G8 A, ^7 v
網站能顯示了。但是 MYSQL 的數據庫查詢值在 8 秒
" P1 Z- u& \, i, z+ m7 x& X* k% I, k% l/ q9 P: ]& B
繼續,優化。 - <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>8 _( f! p( j/ Q' R5 r
& ^6 h# p5 P% I- R0 Y- r4 a
4 G9 J" t5 x/ _9 g* S, n1 ]
複製代碼
7 `7 \9 {& D0 {! U$ g
可以看到,上萬的文章,隨機輸出200篇,查詢 0.02 秒。 執行效率得到大幅度提升。 - <?php; X2 V8 B5 m5 K# z9 _+ o* n
- $t1=microtime(true);( H( i1 b% L, j1 Z( `
- $wpcount = $wpdb->get_var($wpdb->prepare("SELECT count(*) FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish'"));
! a& j/ h6 s7 p) v1 o: h8 C5 f
; n- q' v6 q6 V- _9 p/ l7 ]. r0 O- $randid = mt_rand(0,$wpcount-12);& W4 x' n$ d5 A& ]
- $myposts = $wpdb->get_results("SELECT id,post_title FROM $wpdb->posts WHERE post_type = 'post' AND post_status ='publish' and id>$randid limit 12");
1 n! G) n& N. z0 D! Q4 n: U9 R3 G - echo microtime(true)-$t1."9 @, q( S% `+ W- Z' k
- ";. A! C" [/ H% v+ P* l& {* f+ ?: L4 j
- foreach($myposts as $post){
" \, K; x! J/ K0 u# q7 g- U2 i - ?>: x: C+ }* S3 C8 `
- <li><a href="<?php echo get_permalink($post->id); ?>" title="<?php echo $post->post_title; ?>"><?php echo $post->post_title; ?></a></li>
( @! N7 x1 ~9 ]+ U% K. r0 V - <?php9 ~; j! y* c: f" {
- }?>
複製代碼麻煩上面扣分的,把我的豬毛還來,賺兩幣容易嗎? 不加就算了,還給我減了
+ a: U% r' A' I* Q. x1 Q6 i+ f) E9 [) \1 V" b* ?' E
|