wordpress网站如何优化数据库内存与并发线路

  [复制链接]  1068查看
admin 发表于 2020-12-1 08:53:08 | 显示全部楼层 |阅读模式
wordpress网站如何优化数据库内存与并发线路
 楼主| admin 发表于 2020-12-1 08:56:46 | 显示全部楼层
https://www.wpmee.com/7951.html

WordPress的文章、评论等很多数据都是存放在数据库的,所以搭建wordpress网站的时间,网站的空间不需要多大,而数据库一定要充足,而在WordPress数据库中主要使用 wp_posts 表来存储日志,页面,附件,导航菜单等数据,根据使用的时间越来越长,堆积的数据越来越多,从而运行起来也越来越慢,那么我是十分有必要对 WordPress数据库来进行整体的优化下。

温馨提醒优化之前切记先备份下数据

删除所有日志修订

影响wordpress运行速度的根源在于日志的修订记录,一百多篇文章会有一千多条的日志修订的记录,所以此步优化必须做,提速效果非常明显,执行以下SQL语句:

DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision'
优化 wp_posts 表

写文章的时候进行的插入、更新或删除等都会产生不同大小的记录碎片,整理碎片这步要做。

OPTIMIZE TABLE wp_posts;
删除所有垃圾留言

这个可以在后台一条一条的删除,也可以到MySQL执行下也行:

DELETE FROM wp_comments WHERE comment_approved != '1';
删除没有的标签

有些文章删除了,但标签还在,WordPress不会自动删除的,我们手动清理下吧:

DELETE a,b,c
FROM
wp_terms AS a
LEFT JOIN wp_term_taxonomy AS c ON a.term_id = c.term_id
LEFT JOIN wp_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE (
c.taxonomy = 'post_tag' AND
c.count = 0
);
删除没用的 postmeta 记录

当文章的记录删除后,还有日志扩展表postmeta的数据还没有删除,也人工清理下吧:

DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL
总而言之网站的速度就是网站的”半条生命”不要让自己的网站太过臃肿,以免影响网友访问。
 楼主| admin 发表于 2020-12-1 08:59:06 | 显示全部楼层
数据库也是影响 WordPress 运行速度重要的因素之一,频繁调用、查询数据库会拖累网站整体的加载速度。今天大挖结合自己的实践操作来
优化一些 WordPress 数据库不必要的查询次数。希望可以帮助到大家有效提升博客的速度。

先给大家分享一段可以在wordpress主题底部显示当前运行时 WordPress 数据库查询次数和内存使用情况的代码:

//显示数据库查询次数、查询时间及内存占用的代码
function performance( $visible = false ) {
    $stat = sprintf(  '%d 次查询 用时 %.3f 秒, 耗费了 %.2fMB 内存',
        get_num_queries(),
        timer_stop( 0, 3 ),
        memory_get_peak_usage() / 1024 / 1024
        );
    echo $visible ? $stat : "<!-- {$stat} -->" ;
}
add_action( 'wp_footer', 'performance', 20 );
1
2
3
4
5
6
7
8
9
10
//显示数据库查询次数、查询时间及内存占用的代码
function performance( $visible = false ) {
    $stat = sprintf(  '%d 次查询 用时 %.3f 秒, 耗费了 %.2fMB 内存',
        get_num_queries(),
        timer_stop( 0, 3 ),
        memory_get_peak_usage() / 1024 / 1024
        );
    echo $visible ? $stat : "<!-- {$stat} -->" ;
}
add_action( 'wp_footer', 'performance', 20 );
上面的代码,直接放到主题function.php里即可。

优化WordPress 数据库查询:首先需要在 WordPress 的wp-config.php里进行优化操作,具体配置如下:

define('COOKIE_DOMAIN', 'http://www.wazhuti.com');
//设置地址而不是服务器检查,这将减少服务器查询
define('WP_HOME', 'http://www.wazhuti.com');
define('WP_SITEURL', 'http://www.wazhuti.com');
//优化文章修改历史:Post-Revisioning
define('AUTOSAVE_INTERVAL', 120);// 修改WordPress 编辑器自动保存时间间隔为120秒保存一次
define('WP_POST_REVISIONS', 5);//仅保留保留5个最近修改,也可以减小此数字,但不能太低了
define('EMPTY_TRASH_DAYS', 7 );//7天后自动清空回收站,这个自己根据情况设定
define( 'CORE_UPGRADE_SKIP_NEW_BUNDLED', true );//更新时跳过 wp-content 目录,增加更新效率
//通过剔除对模板路径和样式表路径的数据库查询,这样可提高站点的性能。
define('TEMPLATEPATH', '/wp-content/themes/wa');
define('STYLESHEETPATH', '/wp-content/themes/wa');
1
2
3
4
5
6
7
8
9
10
11
12
define('COOKIE_DOMAIN', 'http://www.wazhuti.com');
//设置地址而不是服务器检查,这将减少服务器查询
define('WP_HOME', 'http://www.wazhuti.com');
define('WP_SITEURL', 'http://www.wazhuti.com');
//优化文章修改历史:Post-Revisioning
define('AUTOSAVE_INTERVAL', 120);// 修改WordPress 编辑器自动保存时间间隔为120秒保存一次
define('WP_POST_REVISIONS', 5);//仅保留保留5个最近修改,也可以减小此数字,但不能太低了
define('EMPTY_TRASH_DAYS', 7 );//7天后自动清空回收站,这个自己根据情况设定
define( 'CORE_UPGRADE_SKIP_NEW_BUNDLED', true );//更新时跳过 wp-content 目录,增加更新效率
//通过剔除对模板路径和样式表路径的数据库查询,这样可提高站点的性能。
define('TEMPLATEPATH', '/wp-content/themes/wa');
define('STYLESHEETPATH', '/wp-content/themes/wa');
如果你没有使用缓存插件,开启WP自带的缓存(Cache)功能,并设置缓存时间,是非常必要的事情。

define('WP_CACHE, true); // 打开 WordPress 自带的缓存功能
define('ENABLE_CACHE', true); // 缓存开关
define('CACHE_EXPIRATION_TIME', 3600); // 缓存时间间隔
1
2
3
define('WP_CACHE, true); // 打开 WordPress 自带的缓存功能
define('ENABLE_CACHE', true); // 缓存开关
define('CACHE_EXPIRATION_TIME', 3600); // 缓存时间间隔
注:3.0后版本要开始缓存在/wp-includes/default-constants.php中开启,切记哦!

wordpress程序自身会经常向wordpress.com的服务器发送请求传送数据,我们可以通过设置wp-config.php来屏蔽此类外部请求的发送,在wp-config.php添加如下代码:

//禁止WordPress程序发出对外请求
define('WP_HTTP_BLOCK_EXTERNAL', true);
1
2
//禁止WordPress程序发出对外请求
define('WP_HTTP_BLOCK_EXTERNAL', true);
值得注意的是我们在加入以上代码后你的网站将无法对任何一个外部服务器发出请求,如果站长朋友们为了加速网站收录使用了ping功能,加上以上代码后ping功能将会失效。解决方法:我们可以设置对外请求白名单即可解决ping失效问题,代码如下:(以百度ping为例)

define('WP_ACCESSIBLE_HOSTS', 'ping.baidu.com');//仅允许 WordPress 向ping.baidu.com发送请求
1
define('WP_ACCESSIBLE_HOSTS', 'ping.baidu.com');//仅允许 WordPress 向ping.baidu.com发送请求
通过 WordPress 的wp-config.php配置完后大家 可以用本文开头分享的代码在源代码里查看和对比一下是不是数据库查询次数和内存使用量有所改善。还有就是要养成提前备份的好习惯,否则后果自负了!

http://www.wazhuti.com/2456.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

邮箱|首页|小黑屋|吾侪 ( 蜀ICP备2020029307号-4 )

GMT+8, 2026-9-17 19:10 , Processed in 0.041348 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © , 吾侪网

快速回复 返回顶部 返回列表