WordPress 网站RIPRO主题全方位速度优化-中级阶段篇(五)redis缓存减少数据库查询和清理数据库

WordPress 网站RIPRO主题全方位速度优化-中级阶段篇(五)redis缓存减少数据库查询和清理数据库

RiPro优化
资源说明:
教程
2020-06-02 RiPro优化 IOS-AUTO 百度已收录 赞助须知 浏览 2.02K 次
赞 助 ㊮:5™币
1™币=1元人民币,
点击充值™币
WordPress 网站RIPRO主题全方位速度优化-中级阶段篇(五)redis缓存减少数据库查询和清理数据库 扫码阅读本文
期限级 VIP仅需要⇩: 1 ™币
永久级 VIP仅需要⇩: 1 ™币

资源赞助下载前请认真阅读 赞助须知与下载须知

资源仅为研究 调试组件或代码原理 交流探讨之用

下载须知 重要提示!!请你花费1分钟认真看完本提醒!谨慎斟酌后赞助、捐献并兑换!本站为资源分享交流平台!所有资源均原样收集于互联网仅供调试、参考和研究,请熟知!本站不能保证每个细节都符合你的需求,也可能存在未知的BUG与瑕疵、或是残次品和不完整的程序(甚至是链接失效无法下载),你下载的资源和程序源码组件因其特殊性均为可复制品,所以不支持任何理由的退款兑现;关于配图和详细文档介绍可能会和下载资源有匹配错误现象,敬请理解因为没有时间逐个测试程序并截图。注册会员根据级别享有相关下载优惠,请仔细辨别。请认真阅读本站声明和相关条款后再点击立即兑换下载,你继续点击立即兑换下载并完成赞助兑换/捐献流程操作,代表你已同意本站所有相关条款!!!
  • 原理介绍
  • 交流经验
  • 环境需求:

    宝塔面板下:redis5.0+php7.3(扩展redis)+ Redis Object Cache插件

    如果你想整站优化速度请联系客服,本站提供全站优化加速服务。绝对让你的网站飞起来。

    1.宝塔面板下:在软件管理-运行环境-redis5.0客户端 安装redis5.0

    WordPress 网站RIPRO主题全方位速度优化-中级阶段篇(五)redis缓存减少数据库查询和清理数据库-IOS-AUTO_资源小站
    运行环境-redis5.0客户端 安装redis5.0

    2.找到宝塔面板中找到你网站环境吓得php版本,然后点击设置-安装redis扩展

    WordPress 网站RIPRO主题全方位速度优化-中级阶段篇(五)redis缓存减少数据库查询和清理数据库-IOS-AUTO_资源小站
    安装redis扩展

    3.打开wordpress后台,安装插件搜索Redis Object Cache插件,下载安装-启用-然后设置:

    WordPress 网站RIPRO主题全方位速度优化-中级阶段篇(五)redis缓存减少数据库查询和清理数据库-IOS-AUTO_资源小站
    Redis Object Cache插件

    4.最重要的一步,有些人写教程简直是不负责任竟然让你们开发外网端口访问Redis。简直就是不负责任,我这里教你们加密和更改端口。

    配置 wordpress 使用 redis需要更改网站根目录wp-config.php文件。

    添加如下代码并根据自己的修改即可,建议修改默认端口6379.

    # 在 wordpress 后台安装 Redis Object Cache 插件
     # 修改 wp-config.php 配置文件
     $ vim /var/www/html/wp-ocnfig.php
     /**
     * redis object cache配置 
    */ 
    define('WP_REDIS_HOST', '127.0.0.1'); # redis 服务器地址
     define('WP_REDIS_PORT', '6379'); # redis 服务器端口 
    define('WP_REDIS_DATABASE', '0'); # redis 数据库(第一个0 ,第一个1,依次类推)
     define('WP_REDIS_PASSWORD', 'aU9Dbks4sPQWr9x8'); # redis 数据库密码

    宝塔面板也需要修改相应的参数如下图:

    WordPress 网站RIPRO主题全方位速度优化-中级阶段篇(五)redis缓存减少数据库查询和清理数据库-IOS-AUTO_资源小站
    redis

    这些设置好了后就是在WP后台安装Redis Object Cache插件。备注(插件在附件中)

    WordPress 网站RIPRO主题全方位速度优化-中级阶段篇(五)redis缓存减少数据库查询和清理数据库-IOS-AUTO_资源小站
    Redis Object Cache插件

    然后就是设置插件如下图:

    WordPress 网站RIPRO主题全方位速度优化-中级阶段篇(五)redis缓存减少数据库查询和清理数据库-IOS-AUTO_资源小站
    Redis Object Cache插件
    WordPress 网站RIPRO主题全方位速度优化-中级阶段篇(五)redis缓存减少数据库查询和清理数据库-IOS-AUTO_资源小站
    Redis Object Cache插件

    剩下的就是你打开网站首页刷新页面查看是不是速度立马就飞快起来,这个解决方案只是解决了,数据库查询的问题你在看看是不是你的数据库查询次数基本已经减少到10分之1的状态。

    下面介绍清理数据库

    PS:请注意看观看此文请认真,一定要先备份,备份,备份重要的事说三遍。备份后在执行SQL语句,否则后果自负!

    PS:请注意看观看此文请认真,一定要先备份,备份,备份重要的事说三遍。备份后在执行SQL语句,否则后果自负!

    首先我们来学习一下WordPress默认数据库的结构:

    • wp_commentmeta:存储评论的元数据
    • wp_comments:存储评论
    • wp_links:存储友情链接(Blogroll)
    • wp_options:存储WordPress系统选项和插件、主题配置
    • wp_postmeta:存储文章(包括页面、上传文件、修订)的元数据
    • wp_posts:存储文章(包括页面、上传文件、修订)
    • wp_terms:存储每个目录、标签
    • wp_term_relationships:存储每个文章、链接和对应分类的关系
    • wp_term_taxonomy:存储每个目录、标签所对应的分类
    • wp_usermeta:存储用户的元数据
    • wp_users:存储用户

    WordPress的默认策略删除插件后,插件的设置保存等数据依旧是在数据库中有保存的,这对部分场景使用来说造成了非常大的问题;

    所谓解铃还须系铃人,插件造成的多余的数据表,还需要插件还治理!而这类插件一般并不多件,一般都是sql表优化插件。并没什么用。

    不过为了安全起见,强烈建议大家先备份好数据库后再操作,这样就不怕误删某些项而导致站点出问题了。『不怕一万就怕万一』,所以切记要记得先备份数据再删除

    手动清理数据库方法

    一、数据库表清理

    1.wordpress数据库表

    • wp_commentmeta: 用于保存评论的元信息,在将评论放入回收站等操作时会将数据放入此表,Akismet等插件也会生成此表的数据。此表不太重要
    • wp_comments: 用于保存评论信息的表
    • wp_links: 用于保存用户输入到Wordpress中的链接(通过Link Manager)的表
    • wp_options: 用于保存Wordpress相关设置、参数的表,里面包括了大量的重要信息
    • wp_postmeta: 用于保存文章的元信息(meta)的表
    • wp_posts: 用于保存你所有的文章相关信息的表,非常的重要。一般它存储的数据是最多的
    • wp_terms: 文章和链接分类以及文章的tag分类可以在表里找到
    • wp_term_relationships: 日志与wp_terms中的类别与标签联合起来共同存储在wp_terms_relationships表中。类别相关链接也存储在wp_terms_relationships中
    • wp_term_taxonomy: 该表格对wp_terms表中的条目分类(类别、链接以及标签)进行说明
    • wp_usermeta : 用于保存用户元信息(meta)的表
    • wp_users:用于保存Wordpress使用者的相关信息的表

    2.清理涉及到的表

    更换主题,删除插件会在将数据留在数据库中,在卸载后无法被清理。除此之外,在由于一些操作,会导致数据库的冗余,比如已经没有的评论,不应该在评论元数据表中有记录,由于没有外键的约束,这些记录没有被删除,会造成数据的冗余。本文的宗旨是删除掉不必要的数据库内容,提高wordpress的效率。

    在此,主要涉及到一下几张表:wp_options,wp_posts,wp_postmeta,wp_commentmeta

    注意:清理之前进行备份

    3.wp_options的清理

    wp_options 这个数据表是wordpress设置的全局数据,这个表会经常有数据膨胀。主要原因是:

    (1)以前用过的一些插件、主题在删除之后没有进行设置的清理,造成残留数据

    (2)占用数据的大户–RSS缓存,后台的数据调用竟然会放到数据库里面

    处理方法:

    ①网上对RSS处理方法有两种一个是修改后台的文件直接不去调用,这个是我不喜欢的毕竟修改了程序,其实这个很容易忘记WP升级是太频繁的哪次更新覆盖了新文件还是照样缓存.另外一种就是在配置文件里面填写define(‘MAGPIE_CACHE_ON’, ‘0’);这个是管用的,添加以后后台首页的调用明显变慢

    1. TRUNCATE TABLE wp_options;

    4.wp_posts清理

    wordpress的文章有好多:wp_posts表中包括文章种类:文章、修订版本、页面、文章的附件、菜单,其中每种文章又会有很多状态:继承、发布、私有、草稿、自动草稿、回收站中。

    冗余原因:

    (1)在小站写文章的时候,系统会保存很多的中间状态,在文章发布之后其很多的中间状态没有被删除

    解决办法:

    ①使用插件:WP Cleaner,使用插件的好处就是有保护机制,无论怎么操作都无法影响已发布的贴子,请放心使用。

    ②自己动手删除,数据库中的标志删除文章,注意备份。

    说明:wp_posts的重要字段含义:

    • post_type:文章类型,post表示为文章,revision表示为修订版本,page为页面,attachment是文章的附件信息,nav_menu_item是菜单。这里我们需要的是文章、页面、和菜单
    • post_status:文章状态,inherit是继承的附件和文章的附带信息,publish是已经发布、private是私有的,draft是草稿,auto-draft是自动草稿,trash是在回收站。这里我们需要的是publish的状态的
      这里我们主要是要 已经发布的文章、页面和菜单,除此之外的都可以删除,当然可以根据自己的需求选择删除哪些
    1. DELETE FROM wp_posts WHERE NOT(post_status = ‘publish’ AND post_type IN(‘post’, ‘nav_menu_item’, ‘page’));

    ③去除WP保存修订版本的功能

    WordPress默认的功能并不都是我们想要的,比如修订版本历史对于大多数人来说是无用的鸡肋功能。所以我么需要禁止一些博客功能,来达到较为符合个人要求的博客应用。对于高手来说,可以直接修改程序的配置文件,来禁止相关功能。对于我等程序小白来说还是利用插件是最佳的选择
    推荐中文插件SuperSwitch来关闭一些我们不需要的博客功能。这个插件可以关闭自动保存和修订历史版本,还可以关闭博客程序、主题、插件的自动更新。功能非常强大,操作及其简单。用SuperSwitch禁止了保存修订版本之后,文章序号就不会断得太厉害了。

    也可以使用代码版关闭:新版可用WordPress禁用修订版本和自动保存

    5.wp_postmeta清理

    wp_postmeta是文章的元信息表,其数据是系统或者插件使用。

    冗余原因:

    (1)文章被删除之后,其在wp_postmeta中的数据理应被删除,在系统中多数情况是系统自动删除,但是由于人为删除文章,系统不知道被删除,就不会删除wp_postmeta表中的数据,造成冗余

    (2)很多主题、插件没有做好及时清除的工作

    解决办法:

    ① 手动删除

    规矩删除

    删除文章中不存在文章的元信息

    1. DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT post_id FROM wp_posts);

    安全删除

    删除_edit_lock和_edit_last条目是安全的,所以这里给出SQL语句

    1. DELETE FROM wp_postmeta WHERE meta_key = ‘_edit_lock’;
    2. DELETE FROM wp_postmeta WHERE meta_key = ‘_edit_last’;

    风险删除

    除了这两条还执行了一些其他语句由于有些风险:自己酌情考虑

    1. DELETE FROM wp_postmeta WHERE meta_key = ‘_wp_old_slug’;
    2. DELETE FROM wp_postmeta WHERE meta_key = ‘_revision-control’;
    3. DELETE FROM wp_postmeta WHERE meta_value = ‘{{unknown}}’;

    特殊插件删除

    postnav插件会记录每个文章的访问数,如果不需要,可以删除

    1. DELETE FROM wp_postmeta WHERE meta_key = ‘views’;

    特殊操作删除

    在WordPress的后台上传图片或者附件后会在wp_postmeta中生成_wp_attached_file和_wp_attachment_metadata两个项,wp_posts也会记录附件的信息。如果使用FTP工具上传文件,表中就不会有这些信息

    1. DELETE FROM wp_postmeta WHERE meta_key = ‘_wp_attached_file’;
    2. DELETE FROM wp_postmeta WHERE meta_key = ‘_wp_attachment_metadata’;

    洁癖删除

    这几条条语句执行完毕能够删除掉95%以上的数据,算的上是极限优化了,最后考虑到这个数据表并不是很重要,有洁净癖的人可以尝试清空这个表,当然我测试清空表会让一些原本的数据丢失

    1. TRUNCATE TABLE wp_postmeta;

    6. wp_commentmeta清理

    冗余原因:

    (1)评论被删除之后,其在wp_commentmeta中的数据理应被删除,在系统中多数情况是系统自动删除,但是由于人为删除文章,系统不知道被删除,就不会删除wp_commentmeta表中的数据,造成冗余。

    (2)很多主题、插件没有做好及时清除的工作。

    解决办法:

    以下语句去除没有用的数据,如果评论中没有此条评论,那么在wp_commentmeta也没有意义,好像wordpress在清空回收站的时候会删除wp_commentmeta相应的数据。如果不出意外,下面的操作我们应该不需要做。

    1. DELETE FROM wp_comments WHERE comment_approved = ‘trash’;
    2. DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments);

    在wp_commentmeta里面会记录评论被删除的时间,这些信息用处不是很大,当评论被从回收站删除之后,这些删除的时间意义就不是很大,就可以删除了,所以用下面的语句一样达到删除的目的。

    1. DELETE FROM wp_commentmeta WHERE meta_key LIKE ‘%trash%’;

    如果直接全部删除wp_commentmeta,影响不会太大,这里面不会涉及重要的数据。

    1. TRUNCATE TABLE wp_commentmeta;

    7.总结

    其实大部分无用的数据均在这几张表中,清理过后应该不会又太多的冗余数据了。但这里没有针对特殊插件或主题做数据库清理,有时这些插件和主题会悄悄动了一些数据库表,这样给清理带来很大难度,需要看代码才知道哦。

    二、数据库表优化

    原理:数据库优化不涉及数据的删除,是将数据库的表的状态调整好。在使用phpmyadmin时候,或许您会看到数据库表后面有多余xxMB的字样,这个指的是那些已经分配给当前表但是却没有使用的空间。这个多余是没有什么害处的,他不会占用你的空间。当删除一个表的一部分记录时,这些记录仍然保持在一个linked list 中,当插入新数据时会再次使用这些老纪录的位置。所以删除纪录会闲置一些空间造成你说的“多余”。

    (1)在phpmyadmin手动 优化或者修复表即可

    (2)运行SQL:

    1. OPTIMIZE TABLE wp_commentmeta;
    2. OPTIMIZE TABLE wp_comments;
    3. OPTIMIZE TABLE wp_links;
    4. OPTIMIZE TABLE wp_options;
    5. OPTIMIZE TABLE wp_postmeta;
    6. OPTIMIZE TABLE wp_posts;
    7. OPTIMIZE TABLE wp_terms;
    8. OPTIMIZE TABLE wp_term_relationships;
    9. OPTIMIZE TABLE wp_term_taxonomy;
    10. OPTIMIZE TABLE wp_usermeta;
    11. OPTIMIZE TABLE wp_users;

    (3)插件:Optimize DB

    三、分享下小站自用的清理方法

    方法一

    小站刚清理的时候先备份数据库,在执行下面的SQL。

    1. #查询修订版本
    2. SELECT COUNT(*) FROM wp_posts WHERE post_type=’revision’;
    3.  
    4. #查询并删除其他表的子链
    5. SELECT * FROM wp_postmeta WHERE post_id IN (SELECT id FROM wp_posts WHERE post_type=’revision’);
    6. DELETE FROM wp_postmeta WHERE post_id IN(SELECT id FROM wp_posts WHERE post_type=’revision’);
    7.  
    8. #查询并删除其他表的子链
    9. SELECT *  FROM wp_term_relationships WHERE object_id IN (SELECT id FROM wp_posts WHERE post_type=’revision’);
    10. DELETE FROM wp_term_relationships WHERE object_id IN (SELECT id FROM wp_posts WHERE post_type=’revision’);
    11.  
    12. #删除修订版本
    13. #delete from wp_posts where post_type=’revision’;
    14. 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’;
    15.  
    16. #其它查询
    17. SELECT COUNT(*) FROM wp_postmeta WHERE meta_key=’_edit_lock’;
    18. SELECT COUNT(*) FROM wp_postmeta WHERE meta_key=’_edit_last’;
    19. SELECT * FROM wp_postmeta WHERE post_id NOT IN (SELECT post_id FROM wp_posts);
    20.  
    21. #其他删除
    22. DELETE FROM wp_postmeta WHERE meta_key = ‘_edit_lock’;
    23. DELETE FROM wp_postmeta WHERE meta_key = ‘_edit_last’;
    24. DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT post_id FROM wp_posts);

    小站执行完发现不够彻底就有了下面的方法二。

    方法二

    1. #这个删除的东西有点多,谨慎执行,建议执行前先备份,否则后果自负
    2. SELECT * FROM wp_posts WHERE NOT(post_status = ‘publish’ AND post_type IN(‘post’,’nav_menu_item’,’page’));
    3. DELETE FROM wp_posts WHERE NOT(post_status = ‘publish’ AND post_type IN(‘post’,’nav_menu_item’,’page’));
    4.  
    5. SELECT * FROM wp_postmeta WHERE meta_key IN (‘_edit_lock’, ‘_edit_last’, ‘_wp_old_slug’, ‘_revision-control’, ‘{{unknown}}’, ‘_wp_attached_file’, ‘_wp_attachment_metadata’);
    6. DELETE FROM wp_postmeta WHERE meta_key IN (‘_edit_lock’, ‘_edit_last’, ‘_wp_old_slug’, ‘_revision-control’, ‘{{unknown}}’, ‘_wp_attached_file’, ‘_wp_attachment_metadata’);
    7.  
    8. SELECT * FROM wp_postmeta WHERE post_id NOT IN (SELECT id FROM wp_posts);
    9. DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT id FROM wp_posts);
    10.  
    11. SELECT * FROM wp_comments WHERE comment_approved LIKE ‘%trash%’;
    12. DELETE FROM wp_comments WHERE comment_approved LIKE ‘%trash%’;
    13.  
    14. SELECT * FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments);
    15. DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments);
    16.  
    17. OPTIMIZE TABLE wp_commentmeta;
    18. OPTIMIZE TABLE wp_comments;
    19. OPTIMIZE TABLE wp_links;
    20. OPTIMIZE TABLE wp_options;
    21. OPTIMIZE TABLE wp_postmeta;
    22. OPTIMIZE TABLE wp_posts;
    23. OPTIMIZE TABLE wp_term_relationships;
    24. OPTIMIZE TABLE wp_term_taxonomy;
    25. OPTIMIZE TABLE wp_termmeta;
    26. OPTIMIZE TABLE wp_terms;
    27. OPTIMIZE TABLE wp_usermeta;
    28. OPTIMIZE TABLE wp_users;

    注意:执行方法二会将多媒体中的图片链接清理掉。

    四、使用插件清理方法:

    经过本站多个测试找到一款比较好的清理数据库的插件,非常之好用。经过清理网站数据库查询速度也能提高不少的效率。

    安装数据库清理插件然后如下图建议新手使用这个方法。本站亲测是没有问题的在ripro主题中。清理后逐个检查所有配置项目从新配置你的wp和主题看看有没有丢失的配置就可以了。

    WordPress 网站RIPRO主题全方位速度优化-中级阶段篇(五)redis缓存减少数据库查询和清理数据库-IOS-AUTO_资源小站
    数据库清理插件
    WordPress 网站RIPRO主题全方位速度优化-中级阶段篇(五)redis缓存减少数据库查询和清理数据库-IOS-AUTO_资源小站
    数据库清理插件

    必看内容

    执行前先备份,如果你不会折腾建议你放弃吧!如果你数据库垃圾数据过多又想折腾,但不会可以让小站协助你折腾,但是要收费的。

    运行SQL时需先备份,对于未知错误而没备份的后果自负。

    执行此文章的任何代码,都需要谨慎谨慎再谨慎,否则后果自负。

    最后啰嗦下备份、备份、备份!

    插件在附件中请下载使用。

    发表评论

  • IOS-AUTO.NET资源小站特别声明:
  • 1. 本网站禁止以任何形式的转载和刊发传播本网站内容!你了解研究和调试原理之后应在24小时内删除!删除!
  • 2. 本网站资源仅供在本网站范围内探讨和交流以及调试原理,其不得超出本范围,不得用于任何他用,商用请官网购买发行版。
  • 3. 转载.刊发或截屏录制等任何形式的传播留存本站内容,本站将追究其法律和赔偿责任,造成本站或第三方损失由你本人赔偿。
  • 4. 本网站提供的任何资源,只是原样采集,原版BUG缺陷如常存在,本站不是开发商请熟知,其他问题请联系客服研究探讨。
  • 5. 本网站资源"™币"不提供任何兑现,在此感谢你赞助换取"™币"维持本站存在!使用或注册前请认真阅读本站服务协议和公告声明。
  • 6. 你赞助或捐助给本网站的"™币"将全部用于本站运维和收集资源使用,愿你永远幸福 工作顺利,谢谢
  • 7. 本网站发布的内容若侵犯到您的权益,请联系站长并提供你的版权证明,本站收到后我们将及时删除处理。
  • 8. 请认真阅读本站注册公告和相关协议后使用本网站,你继续浏览代表你已同意本站所有条款。
  • 9. 请勿相信下载后资源文件里的网址链接、QQ、微信、邮箱、电话等联系方式,你主动联系需自行承担全部后果。谨防诈骗!
  • © 2020 Murphy's Law management Co., Ltd All rights reserved

  • IOS-AUTO_资源小站 » WordPress 网站RIPRO主题全方位速度优化-中级阶段篇(五)redis缓存减少数据库查询和清理数据库