Dragon
  • 注册、登陆后即可全站无广告畅快浏览本博客了!
  • 本博客已开启支持百度AI智能内容自动审核机制!
明月登楼明月登楼  2017-03-03 08:00 明月登楼的博客 隐藏边栏 |   87 条评论  15,162 
文章评分 1 次,平均分 5.0
导语: 至此,通过 WordPress 的 wp-config.php 配置优化和减少数据库查询次数也就这些了,大家一定要根据自己的主机配置和 WordPress 配置灵活的设定上述这些开关哦,还有最重要的一点,所有对 wp-config.php 的操作需要在纯文本编辑器里完成,完成后保存时一定要设定此文档的编码为 UTF8,要不上传覆盖后会造成 WordPress “500 错误”的,还有就是要养成提前备份好 wp-config.php 文档的习惯,否则后果自负了!

记得在【明月的 WordPress 优化思路总结』一文里明月提到过 WordPress 的数据库其实也是一个影响 WordPress 运行的主要因素,过于频繁的数据库调用、查询也会拖慢网站整体的载入速度。那么今天明月就结合自己的实践操作运用的一些优化减少 WordPress 数据库查询次数的经历分享给大家,希望可以帮助到大家有效提升博客的速度。

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

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

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

[ad]

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

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

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

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

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

  1. define('WP_MEMORY_LIMIT', '64M');
  2. define('WP_MEMORY_LIMIT', '96M');
  3. define('WP_MEMORY_LIMIT', '128M');

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

  1. define('WP_CACHE, true); // 打开 WordPress 自带的缓存功能
  2. define('ENABLE_CACHE', true); // 缓存开关
  3. define('CACHE_EXPIRATION_TIME', 3600); // 缓存时间间隔

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

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

  1. define('WP_HTTP_BLOCK_EXTERNAL', true);  //禁止 WordPress 程序发出对外请求

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

  1. 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 文档的习惯,否则后果自负了!

「点点赞赏,手留余香」

还没有人赞赏,快来当第一个赞赏的人吧!

明月登楼给明月登楼打赏
×
予人玫瑰,手有余香
  • 2
  • 5
  • 10
  • 20
  • 50
2
支付

本文来自投稿,不代表明月登楼的博客立场,版权归原作者所有,欢迎分享本文,转载请保留出处!

明月登楼
明月登楼 关注:8    粉丝:0 最后编辑于:2019-07-06
玉满斋(www.ymanz.com)网站创始人,☑玉器爱好者 ☑微博控 ☑手机控 ☑历史控 ☑宅 ☑网络控 ☑Wordpress控

发表评论

表情 链接 私密 格式 签到
  1. 绿软吧(lvr8.com)

    感谢分享,谢谢站长!!

    30楼 2020-05-07 12:14
    0 0 回复
  2. 极客库

    满满干货,收藏了,持续关注博主

    29楼 2019-02-28 08:37
    0 0 回复
  3. 懿古今
    懿古今 评论达人 LV.6 来自天朝的朋友 谷歌浏览器 55.0.2883.87 Windows 7

    我添加那些代码到 wp-config.php,也将域名和主题名称改为我的了,但是站点竟然白屏,最后只能直接删除了

    28楼 2017-10-27 17:48
    0 0 回复
  4. 腾讯云

    请问下,采集的,超过百万数据的如何优化?

    27楼 2017-08-27 21:09
    0 0 回复
    • 明月登楼
      明月登楼 博主 来自天朝的朋友 谷歌浏览器 57.0.2987.132  MI 4LTE Build/MMB29M

      @腾讯云百万数据?不是吧?如果流量大的话就不建议使用 MySQL,最好是使用纯静态的 CMS 系统,比如帝国 CMS 等,WordPress 的话很难承受这么大的数据查询负载的,当然如果有较强的开发团队做二次开发专门优化也是可以的,还有就是服务器端的部署方案的改进和优化提升了!

  5. Koolight
    Koolight 评论达人 LV.5 来自天朝的朋友 Safari浏览器 534.30  Android 4.4.2 PE-CL00 Build/HuaweiPE-CL00

    听说把很多调用的地方写死也可以减少查询。

    26楼 2017-03-12 15:48
    0 0 回复
  6. 廖梓旭

    小流量减少数据库读取对速度感觉起不到更大作用,如果流量大的话,都做缓存了。

    25楼 2017-03-12 02:00
    0 0 回复
  7. 美玉无瑕
    美玉无瑕 评论达人 LV.3 来自天朝的朋友 QQ浏览器 Windows 10

    目前速度感觉很满意,就不折腾了!还是好好弄内容吧! :wink: :idea:

    24楼 2017-03-05 17:06
    0 0 回复
  8. 苍烟落照
    苍烟落照 评论达人 LV.2 来自天朝的朋友 谷歌浏览器 56.0.2924.87 Windows 10

    不错呀!我得好好研究一下下!

    23楼 2017-03-05 17:04
    0 0 回复
  9. 简单生活
    简单生活 评论达人 LV.1 来自天朝的朋友 谷歌浏览器 50.0.2661.102 Windows 7

    当时试了不行,删除掉就好了,其次你这里保存不了我的信息,刷新就没了,得重新录入

    22楼 2017-03-05 15:14
    0 0 回复
  10. 简单生活
    简单生活 评论达人 LV.1 来自天朝的朋友 谷歌浏览器 50.0.2661.102 Windows 7

    define('COOKIE_DOMAIN', 'www.imydl.com'); 用了这个表示我站前台登录不了了! :arrow:

    21楼 2017-03-05 15:01
    0 0 回复
扫一扫二维码分享