本帖最後由 hknovo 於 2013-7-15 14:43 編輯 ( k. ^4 M% i4 z+ U4 E: [
! O( q* l( U$ w7 `* L網站訪問速度,也是影響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; ?>
- 1 o5 ^- U/ f" J
; c* J6 x3 ^9 W3 o
[color=rgb(51, 102, 153) !important]複製代碼
. s" F. J. A, N# K- s在幾萬片文章下,服務器直接 time out m8 c/ q1 z, v. S
1 e; @; ?4 [/ L+ A, `. Y
因為之前的隨機是在幾萬篇文章中隨機的, 我們加入一個隨機值,看看下面的代碼。 - <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>; X0 ]: k9 v' x/ N
, v2 O3 D, ?# X
[color=rgb(51, 102, 153) !important]複製代碼
3 Z p5 J4 G' j2 v8 X1 K6 g 網站能顯示了。但是 MYSQL 的數據庫查詢值在 8 秒
% j4 Z3 y( O$ O5 i! f( ]$ c1 v4 r, v8 o) R
繼續,優化。 - <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>
( z! n; {9 ~; z t0 i* v4 ~5 Y* x) M) \9 G
7 K! E; V6 s/ o7 U/ x, W3 @( t) @複製代碼
4 g" c$ c: G3 y% T) @' u& l4 q
可以看到,上萬的文章,隨機輸出200篇,查詢 0.02 秒。 執行效率得到大幅度提升。 - <?php
; A# S( M$ G. {$ V+ l1 ^$ f' Y* ` - $t1=microtime(true);
7 @/ G4 ?) ]) L* [ - $wpcount = $wpdb->get_var($wpdb->prepare("SELECT count(*) FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish'"));
% ~8 Q. [5 m' s- ]% g& M# f
( [! \4 M4 l( F, ~9 _$ b- $randid = mt_rand(0,$wpcount-12);
& z* z" \( J( [* W" R2 m% C - $myposts = $wpdb->get_results("SELECT id,post_title FROM $wpdb->posts WHERE post_type = 'post' AND post_status ='publish' and id>$randid limit 12");
9 G) E. y4 r7 V0 m# s% _ - echo microtime(true)-$t1."$ m$ L4 n$ {, O8 f' \! |0 B, F) ^
- ";9 g; N* s5 q4 z+ s$ Y9 P
- foreach($myposts as $post){; }! g3 i5 y$ o
- ?>2 `" N) Y# F8 y/ F# q. w
- <li><a href="<?php echo get_permalink($post->id); ?>" title="<?php echo $post->post_title; ?>"><?php echo $post->post_title; ?></a></li>8 Q: z6 K" P v- h! ~: l8 u
- <?php
0 p, Z. T/ B' A, e) X: _! G' B - }?>
複製代碼麻煩上面扣分的,把我的豬毛還來,賺兩幣容易嗎? 不加就算了,還給我減了
+ h) Y# m6 u$ X( r- P# Z" _# |' Z. c, q% @
|