Tăng tốc WordPress của bạn bằng cách lưu vào bộ đệm các truy vấn tùy chỉnh bằng API chuyển tiếp

Hỡi chàng trai, tiêu đề nghe có vẻ đáng sợ phải không. Bạn không có gì phải lo lắng vì chúng tôi sẽ chia nhỏ tất cả. Chủ đề của bạn có đang chạy các truy vấn WordPress tùy chỉnh để hiển thị các bài đăng ngẫu nhiên, bài đăng phổ biến, bài đăng gần đây, v.v. trong thanh bên hay bất kỳ nơi nào khác không? Nếu có, thì bạn nên cân nhắc sử dụng API tạm thời của WordPress để lưu vào bộ nhớ cache các truy vấn này nhằm giảm tiêu thụ tài nguyên cũng như giúp giảm thời gian tải. Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách tăng tốc trang web WordPress của bạn bằng cách lưu vào bộ đệm các truy vấn tùy chỉnh bằng cách sử dụng API Chuyển tiếp.

Other :

Lưu ý: Bạn cần hiểu cách các chủ đề WordPress hoạt động (các vòng lặp, v.v.), để có thể theo dõi bài đăng này.

Vì vậy, toàn bộ bộ nhớ đệm và biệt ngữ thoáng qua này đang lướt qua đầu tôi. Đừng lo lắng, hãy để chúng tôi giải thích nó làm gì. Về cơ bản, nếu bạn đang chạy một trang web như List25 và có một vòng lặp hiển thị 6 bài đăng ngẫu nhiên trong thanh bên của bạn, thì API tạm thời có thể giúp ích. Mỗi khi người dùng làm mới trang, Truy vấn WP tùy chỉnh mà bạn có sẽ đi vào cơ sở dữ liệu của bạn và kéo 6 bài đăng ngẫu nhiên. Nếu bạn là một trang web tương đối mới, nó sẽ không tệ như vậy. Nhưng nếu bạn đang có RẤT NHIỀU người vào trang web của mình, thì nó có thể làm hỏng máy chủ SQL của bạn và bạn sẽ thấy màn hình “Lỗi khi thiết lập kết nối cơ sở dữ liệu”. Bằng cách thêm một vài dòng mã bổ sung, bạn có thể dễ dàng lưu trữ kết quả của truy vấn đó (lưu vào bộ nhớ cache) trong một khoảng thời gian nhất định bằng cách sử dụng API Chuyển tiếp.

Ví dụ về mã vòng lặp mà chúng tôi có để kéo các bài đăng ngẫu nhiên:

<?php $random_query = new WP_Query('orderby=rand&posts_per_page=6');
while ($random_query->have_posts()) : $random_query->the_post();
?>
<div class="gridcontainer">
<div class="gridthumb"><a href="<?php%20the_permalink();%20?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a></div>
<div class="gridcontent">
<div class="gridtext"><a href="<?php%20the_permalink()%20?>" rel="bookmark"><?php the_title(); ?></a></div>
</div>
</div>
<?php endwhile; ?>

Phần thú vị nhất về truy vấn bài đăng ngẫu nhiên của chúng tôi trong thanh bên là nó luôn hiển thị nội dung mới. Vì vậy, bằng cách lưu vào bộ nhớ đệm truy vấn trong 12 giờ, chúng ta sẽ có 6 bài đăng giống nhau hiển thị trong 12 giờ đúng không? Chà, chúng tôi đã tìm được một tác phẩm nhờ sự gợi ý của người bạn Konstantin Kovshenin (@kovshenin). Anh ấy đề xuất rằng thay vì sử dụng WP_Query, chúng tôi sử dụng get_posts và kéo 20 bài đăng để thay thế. Lưu vào bộ nhớ cache các kết quả của truy vấn đó bằng cách sử dụng API chuyển tiếp, sau đó sử dụng hàm array_rand () để chỉ hiển thị ngẫu nhiên 6 bài đăng trong số 20 bài đăng ban đầu. Bằng cách này, chúng tôi có thể tiếp tục mô phỏng hiệu ứng ngẫu nhiên trên trang web.

Điều đầu tiên chúng tôi làm là thiết lập thời gian tạm thời. Chúng tôi nhận được mã từ trang WordPress Codex.

// Get any existing copy of our transient data
if ( false === ( $special_query_results = get_transient( 'special_query_results' ) ) ) {
    // It wasn't there, so regenerate the data and save the transient
	$randargs = array('orderby' => 'rand', 'numberposts' => 20);
	$special_query_results = get_posts($randargs);
    set_transient( 'special_query_results', $special_query_results, 60*60*12 );
}

Lưu ý rằng 60 * 60 * 12 là khu vực mà bạn có thể kiểm soát độ dài của bộ nhớ cache. Hãy thay đổi nó thành bất cứ điều gì bạn thích. Bây giờ nếu chúng ta hiển thị $ special_query_results bằng vòng lặp foreach, chúng ta sẽ có tất cả 20 bài đăng được hiển thị. Vì vậy, chúng ta cần sử dụng hàm array_rand () để chỉ kéo 6 mục một cách ngẫu nhiên. Chúng tôi đã thêm mã như thế này:

$randomposts = get_transient( 'special_query_results' );
$randkey = array_rand( $randomposts, 6 );

Bây giờ, điều này sẽ lấy ra 6 ID bài đăng một cách ngẫu nhiên từ dữ liệu tạm thời của chúng tôi. Tuy nhiên, nó sẽ không kéo các giá trị cho mỗi bài đăng. Vì vậy, chúng tôi phải thêm các bit mã này:

$sixposts[0] = $randomposts[$randkey[0]];
$sixposts[1] = $randomposts[$randkey[1]];
$sixposts[2] = $randomposts[$randkey[2]];
$sixposts[3] = $randomposts[$randkey[3]];
$sixposts[4] = $randomposts[$randkey[4]];
$sixposts[5] = $randomposts[$randkey[5]];

Về cơ bản, chúng tôi đã tạo một mảng cho $ sixposts trong đó chúng tôi gán một giá trị cho mỗi mục đó. Không chắc liệu đây có phải là cách tốt nhất để thực hiện nó hay không, nhưng nó đã hiệu quả. Nếu bất kỳ bạn có đề xuất nào tốt hơn, hãy đăng nó trong phần bình luận.

Sau khi làm điều đó, bây giờ chúng tôi đã sẵn sàng để hiển thị vòng lặp. Đơn giản chỉ cần đặt mã như sau:

global $post; //required for it to work
foreach( $sixposts as $post ) :  setup_postdata($post);

//All the items go here.

endforeach; 

setup_postdata cho phép bạn sử dụng tất cả các thẻ vòng lặp bên trong vòng lặp foreach này như the_permalink, v.v.

Để giúp mọi người dễ dàng sử dụng, đây là mã cuối cùng mà chúng tôi có:

<?php
// Get any existing copy of our transient data
if ( false === ( $special_query_results = get_transient( 'special_query_results' ) ) ) {
    // It wasn't there, so regenerate the data and save the transient
	$randargs = array('orderby' => 'rand', 'numberposts' => 20);
	$special_query_results = get_posts($randargs);
    set_transient( 'special_query_results', $special_query_results, 60*60*12 );
}

// Use the data like you would have normally...
$randomposts = get_transient( 'special_query_results' );
$randkey = array_rand( $randomposts, 6 );
$sixposts[0] = $randomposts[$randkey[0]];
$sixposts[1] = $randomposts[$randkey[1]];
$sixposts[2] = $randomposts[$randkey[2]];
$sixposts[3] = $randomposts[$randkey[3]];
$sixposts[4] = $randomposts[$randkey[4]];
$sixposts[5] = $randomposts[$randkey[5]];

global $post;
foreach( $sixposts as $post ) :  setup_postdata($post); ?>

<div class="gridcontainer">
<div class="gridthumb"><a href="<?php%20the_permalink();%20?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a></div>
<div class="gridcontent">
<div class="gridtext"><a href="<?php%20the_permalink()%20?>" rel="bookmark"><?php the_title(); ?></a></div>
</div>
</div>

<?php endforeach; ?>

Vâng, bây giờ bạn chỉ thực hiện truy vấn DB này 12 giờ một lần cho dù có bao nhiêu người dùng đang truy cập trang web của bạn.

Free Download Tăng tốc WordPress của bạn bằng cách lưu vào bộ đệm các truy vấn tùy chỉnh bằng API chuyển tiếp :


Nếu bạn muốn phiên bản mới nhất hoặc bản sạch, vui lòng liên hệ qua messenger tại đây : m.me/101324895411988

If you want the lastest version or original,please contact via messenger

Ủng hộ tôi qua MOMO

Ủng Hộ TÔi

Decryption key :

Trong khi chờ đợi, vui lòng nhấn vao quảng cáo phía trên để tác giả có phí duy trì website , xin cám ơn ^^^

In the meantime, please click on the ad so that the author has a website maintenance fee, very very very thank you ^^^ !!!!

Download Instructions

Join our official telegram group and channel for latest updates.

Để lại một bình luận

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More

© 2021 All Rights Reserved | Shared by Tainguyenwordpress