减少 WordPress 数据库查询次数来优化性能开启PHP自动缓存

释放双眼,带上耳机,听听看~!

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 );

上面的代码,直接放到主题 function.php 里既可。不过,小编还是建议大家采用将自己添加的代码独立于主题 function.php 之外,以防止主题更新、更换后自己添加的代码丢失和失效。代码不会增加过多的主机负担,仅仅是利用了 WordPress 的扩展机制的一个小技巧而已,以实现我们自定义代码以“插件”的形式独立出来。

 

上述代码小编建议大家都加上,这样在博客任意页面的“源代码”里都可以看到当前的数据库查询次数和内存使用情况,便于大家在优化时有个对比。同时在使用一些“插件”的时候也可以用来观察“插件”的内存占用和数据库调用情况。

要减少 WordPress 数据库查询次数,我们首先在 WordPress 的 wp-config.php 里进行一些基本的配置,这样就可以减少一些几乎多余的、每次都需要查询数据库的次数,我尽量都配上了中文注释,具体配置如下:

define(‘COOKIE_DOMAIN’, ‘www.imydl.com’);

//设置地址而不是服务器检查,这将减少服务器查询

define(‘WP_HOME’, ‘http://www.imydl.com’);

define(‘WP_SITEURL’, ‘http://www.imydl.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/begin’);

define(‘STYLESHEETPATH’, ‘/wp-content/themes/begin’);

关于上述代码第一行指定 cookies 域小知识,由于很多原因你需要给站点指定 cookies 域。比较常见的就是阻止子域名上请求静态内容的 cookies 不必要的传输。这种情况下,你就可以使用此定义告知 WordPress 只向非静态域发送 cookies,这将会大大提高网站的性能。

如果你的主机支持指定 PHP 使用的内存,还可以根据主机配置情况加入下面任一行代码:

define(‘WP_MEMORY_LIMIT’, ’64M’);

define(‘WP_MEMORY_LIMIT’, ’96M’);

define(‘WP_MEMORY_LIMIT’, ‘128M’);

如过你没有使用缓存插件一类的可以开启 WP 自带的缓存(Cache)功能,并设置缓存时间,是非常必要的事情。直接在wp-config.php文件设置

define(‘WP_CACHE, true); // 打开 WordPress 自带的缓存功能

define(‘ENABLE_CACHE’, true); // 缓存开关

define(‘CACHE_EXPIRATION_TIME’, 3600); // 缓存时间间隔

注:3.0 后版本要开始缓存在/wp-includes/default-constants.php 中开启,切记哦!相关设置如下:

(1)修改 WP MEMORY LIMIT 的内存数值

这个 php 文件无论虚拟主机还是服务器都可以修改。这个 WP MEMORY LIMIT 文件路径是: /wp-includes/default-constants.php (版本5.4),下载到本地电脑后,在这个文件第 45-57行的位置能够看到以下代码:

 

这个 WP_MEMORY_LIMIT 是 WordPress 对内存的限制数值,默认 64M 和 40M 是多站点和单站点的显示,目的是防止耗尽服务器资源。现在的主题和插件对内存消耗越来越高。而现在国内外常见 VPS 服务器,大部分都是 1G 内存起步了(除了搬瓦工 512 内存方案),所以把这两项参数都改成 256MB 更合适。

define( ‘WP_MEMORY_LIMIT’, ’256M’ );

define( ‘WP_MEMORY_LIMIT’, ’256M’ );

下面的 WP_MAX_MEMORY_LIMIT 是对后台管理员的内存限制,256M 更合适。

define( ‘WP_MAX_MEMORY_LIMIT’, ‘256M’ );

(2)、修改 php.ini 的内存数值

这里只有 VPS 也就是独立服务器才能够设置。虚拟主机一般改不了。php.ini 的位置在/usr/local/php/etc/下面。用 SFTP 软件下载下来,用 dreamweaver 或者 EditPlus 之类的代码编辑软件搜索 memory_limit 并把数值改成 256M。php.ini 设置的最大内存是 128M,所以只有上面的 wordpress 配置中改成 256M 是无效的,php 这里限制也要改成 256M 才可以。

云主机可以使用宝塔直接更改,如下图:

 

以上代码改完后,重启 php 服务(命令:/etc/init.d/php-fpm reload),apache 是重启 apache 服务。

操作完毕后你可以马上去试试后台和前台的打开速度如何,这种优化方法的效果是立竿见影的。弊端是可能会在并发访问量大的时候导致服务器内存快速消耗。另外如果是虚拟主机的话还没出现内存耗尽的问题,也许是商家对虚拟主机管控方式不同。在 wordpress 优化方面老魏懂的也不多,后面魏艾斯博客会不断尝试更多的优化方法。

 

此外:

对于 WordPress 比较熟的站长可能会发现自己的网站会经常请求向 wordpress.com 的服务器发送请求传送数据,虽然我相信,WordPress 不会对我的小站有什么兴趣,不过这样一来 wordpress 的运行效率就降低了很多。所以为了避免这类外部请求的发送,我们可以通过设置 wp-config.php 来屏蔽此类外部请求的发送,在 wp-config.php 添加如下代码:

define(‘WP_HTTP_BLOCK_EXTERNAL’, true);  //禁止 WordPress 程序发出对外请求

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

define(‘WP_ACCESSIBLE_HOSTS’, ‘ping.baidu.com’);//仅允许 WordPress 向 ping.baidu.com 发送请求

这里明月要特别强调的是,如果你的博客本身已经集成了类似“微博同步”、“新浪博客同步发布博文”、“微信机器人”等等一些功能的请一定要慎重使用这个“禁止 WordPress 程序发出对外请求”,一旦使用了,所有这些都会失效的,明月目前没有使用这个的,特此强调一下哈!

至此,通过 WordPress 的 wp-config.php 配置优化和减少数据库查询次数也就这些了,配置完后大家 可以用本文开头分享的代码在源代码里查看和对比一下是不是数据库查询次数和内存使用量有所改善。大家一定要根据自己的主机配置和 WordPress 配置灵活的设定上述这些开关哦,还有最重要的一点,所有对 wp-config.php 的操作需要在纯文本编辑器里完成,完成后保存时一定要设定此文档的编码为 UTF8,要不上传覆盖后会造成 WordPress “500 错误”的,还有就是要养成提前备份好 wp-config.php 文档的习惯,否则后果自负了!

给TA买糖
共{{data.count}}人
人已赞赏
网站建设

苹果CMS-V10明星库数据库文件免采集一键导入即用!

2020-9-12 2:06:40

网站建设

【B2主题美化】利用Server酱给b2主题增加一个新订单微信通知

2020-9-15 22:37:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索