2024赚钱项目-创业项目-赚钱项目-创业赚钱教程-引流教程 - 玩锤子创业网

快速解决WordPress文章过多导致网站卡顿的问题,WordPress文章数量很多导致网站变慢怎么办?

万人迷 软件工具 2023-11-27 11:41:51

你们有没有留意到,如果你应用WordPress做为程序流程时,文章发表愈来愈卡,不提升就不行。今日给大家分享一下WP的数据库系统SQL优化方法。依据 服务器参照 积累的经验,大部分 WordPress 网址都是有百余到数千篇文章内容。这时,一般用户也不会对的网站打开速度觉得一切出现异常。但如果WordPress网站的帖子总数高于10万,即便网址服务器配置很强,的网站打开速度大部分也会非常慢。

主要是因为 WordPress 在查看文章列表时,默认设置还会查看文章内容数。这对少量网站数据应当不会产生其他问题,但对于大量文章内容是在所难免的。慢查询。服务器引用的一位客户告诫我们,它的网址有40万一篇文章,打开首页必须一两分钟,乃至主页或文章内容页也经常会无法打开。

WordPress网站查看比较慢缘故:WordPress在查看贴子目录时,默认设置还会查看贴子数。应用这种方法:get_posts、query_posts 和 WP_Query。get_posts在4.6.1 中未使用SQL_CALC_FOUND_ROWS,但是query_posts和WP_Query依然应用,因此需要提升。

那样怎样解决WordPress文章太多造成网址慢的问题呢?解决方案主要有两种,提升WordPress的查询功能,轻松解决了这种情况。

方法一:外挂控制模块,仅2KB【强烈推荐】
进到WordPress后台管理-外挂-安装插件-提交外挂,组装激话外挂,不需要另外设定

下载链接:https://zhujicankao.com/img/images/0e4b1cdfa4f1aeb.zip

方法二:纯编码方式
1、彻底禁止使用SQL_CALC_FOUND_ROWS,放进functions.php文件中

add_action(‘pre_get_posts’, ‘wndt_post_filter’);
function wndt_post_filter($query) {
if (is_admin() or !$query->is_main_query()) {
return $query;
}

// 严禁查看 SQL_CALC_FOUND_ROWS
$query->set(‘no_found_rows’, true);
}

2、如果你还要查看文章内容数,请选择更有效的EXPLAIN方式替代SQL_CALC_FOUND_ROWS,以更有效的方法禁止使用SQL_CALC_FOUND_ROWS。接下来我们应用 EXPLAIN 方式。详细编码如下所示,放在functions.php文件中

“`php
if ( ! function_exists( ‘zjck_set_no_found_rows’ ) ) {
/**
* 设定WP_Query的 ‘no_found_rows’ 特性为true,禁止使用SQL_CALC_FOUND_ROWS
*
* @param WP_Query $wp_query WP_Query案例
* @return void
*/
function zjck_set_no_found_rows(\WP_Query $wp_query)
{
$wp_query->set(‘no_found_rows’, true);
}
}
add_filter( ‘pre_get_posts’, ‘zjck_set_no_found_rows’, 10, 1 );

if ( ! function_exists( ‘zjck_set_found_posts’ ) ) {
/**
* 应用 EXPLAIN 方法重新构建
*/
function zjck_set_found_posts($clauses, \WP_Query $wp_query)
{
// Don’t proceed if it’s a singular page.
if ($wp_query->is_singular()) {
return $clauses;
}

global $wpdb;

$where = isset($clauses[‘where’]) ? $clauses[‘where’] : ”;
$join = isset($clauses[‘join’]) ? $clauses[‘join’] : ”;
$distinct = isset($clauses[‘distinct’]) ? $clauses[‘distinct’] : ”;

$wp_query->found_posts = (int)$wpdb->get_row(“EXPLAIN SELECT $distinct * FROM {$wpdb->posts} $join WHERE 1=1 $where”)->rows;

$posts_per_page = (!empty($wp_query->query_vars[‘posts_per_page’]) ? absint($wp_query->query_vars[‘posts_per_page’]) : absint(get_option(‘posts_per_page’)));

$wp_query->max_num_pages = ceil($wp_query->found_posts / $posts_per_page);

return $clauses;
}
}
add_filter( ‘posts_clauses’, ‘zjck_set_found_posts’, 10, 2 );

文中由服务器参照刊登,详细信息:https://zhujicankao.com/66624.html
————————————————

以上内容免费阅读!感谢!

推荐度:

发表评论

用户头像 游客
此处应有掌声~

评论列表

还没有评论,快来说点什么吧~