WordPress毫无疑问是最优秀使用量最大的开源cms程序,但是WordPress建站有个问题,就是文章数据达到10万级以上就会变得很卡。一般的个人博客是很难达到这个数据的,但是有些大型网站或者采集网站,却比较容易达到这个量级。
当网站的文章数量超过10万篇时,明显感觉到打开速度变慢了很多。
变慢的原因
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = ‘post’ AND (wp_posts.post_status = ‘publish’ ) ORDER BY wp_posts.post_date DESC LIMIT 0, 20
SELECT FOUND_ROWS()
query_posts和WP_Query会因为SQL_CALC_FOUND_ROWS出现慢查询。
解决办法一:彻底禁用SQL_CALC_FOUND_ROWS
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);
}
解决办法二:使用更加高效的EXPLAIN方式
if ( ! function_exists( ‘maizi_set_no_found_rows’ ) ) {
/**
* 设置WP_Query的 ‘no_found_rows’ 属性为true,禁用SQL_CALC_FOUND_ROWS
*
* @param WP_Query $wp_query WP_Query实例
* @return void
*/
function maizi_set_no_found_rows(WP_Query $wp_query)
{
$wp_query->set(‘no_found_rows’, true);
}
}
add_filter( ‘pre_get_posts’, ‘maizi_set_no_found_rows’, 10, 1 );
if ( ! function_exists( ‘maizi_set_found_posts’ ) ) {
/**
* 使用 EXPLAIN 方式重构
*/
function maizi_set_found_posts($clauses, WP_Query $wp_query)
{
// Don’t proceed if it’s a singular page.
if ($wp_query->is_singular()) {
© 版权声明
1、本网站名称:草根创业网
2、本站永久网址:https://www.cizhui.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ:95114390进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。 项目转载于网络!
7.本网站仅作项目分享,不提供任何收益保障,如遇充值环节或绑定支付账户或输入支付密码之类的异常步骤,建议停止操作!风险自辩!平台不对操作项目的损失负责!
2、本站永久网址:https://www.cizhui.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ:95114390进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。 项目转载于网络!
7.本网站仅作项目分享,不提供任何收益保障,如遇充值环节或绑定支付账户或输入支付密码之类的异常步骤,建议停止操作!风险自辩!平台不对操作项目的损失负责!
THE END