GG资源网

减少 WordPress 数据库查询次数来优化性能(WordPress获取页面数据库查询次数及时间)

减少 WordPress 数据库查询次数来优化性能

记得在【明月的 WordPress 优化思路总结】一文里明月提到过 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 的扩展机制的一个小技巧而已,以实现我们自定义代码以“插件”的形式独立出来。

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

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

  1. define(\'COOKIE_DOMAIN\', \'blog.ymanz.com\');

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

  3. define(\'WP_HOME\', \'http://blog.ymanz.com\');

  4. define(\'WP_SITEURL\', \'http://blog.ymanz.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文档的习惯,否则后果自负了!

WordPress获取页面数据库查询次数及时间

在优化WordPress网站性能时,我们需要对页面的数据库查询次数及查询时间进行统计显示,这样便于对页面进行相应优化处理。WordPress网站如果运行比较慢除了跟加载的JS、CSS数量有关,也跟数据库查询有很大关系。而数据库查询优化往往是站长容易忽略的部分。对数据库查询影响比较大的一般都是自定义域。如果页面自定义域比较多,数据库查询就会相应也比较多了。还有一个非常影响数据库查询性能的项目就是随机文章。这种随机生成的内容是非常影响数据库性能的,尤其是对流量比较大的网站影响很大。为了进行优化,势必需要先知道网页的数据库查询次数及时间。以下是获取当前页面数据库查询次数及时间的方法:

获取数据库查询次数

获取数据库查询时间

代码说明:可以将以上两个代码插入主题的footer.php文件中并刷新页面查看相关数据库查询数据。

由于网站搬家,部分链接失效,如无法下载,请联系站长!谢谢支持!
1. 带 [亲测] 说明源码已经被站长亲测过!
2. 下载后的源码请在24小时内删除,仅供学习用途!
3. 分享目的仅供大家学习和交流,请不要用于商业用途!
4. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
5. 本站所有资源来源于站长上传和网络,如有侵权请邮件联系站长!
6. 没带 [亲测] 代表站长时间紧促,站长会保持每天更新 [亲测] 源码 !
7. 盗版ripro用户购买ripro美化无担保,若设置不成功/不生效我们不支持退款!
8. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
9. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
10.如果您购买了某个产品,而我们还没来得及更新,请联系站长或留言催更,谢谢理解 !
GG资源网 » 减少 WordPress 数据库查询次数来优化性能(WordPress获取页面数据库查询次数及时间)

发表回复

CAPTCHAis initialing...