7个加快WordPress网站打开速度的方法

第三、取消谷歌open sans字体加载;第四、商业化主题是否太复杂;第五、检查是否有垃圾评论;第六、数据库缓存文件负担;第七、优化

前言:

许多人说路人博客访问速度很快,问我是不是服务器配置很高,

其实我的服务器也是1h2g阿里云学生机

配置并不是很高,wp本身的确挺笨重的,相比emlog typecho笨重的根本没话说

但是经过优化后速度也是可以与emlog搭建的博客进行比拼

正文:

优化思路

第一、清除不必要的头部加载

我们可以到自己的WP网站源代码看看,在头部位置是不是看到很多的JS和CSS加载项目,多达十几条,然后我们可以看看类似大前端这样的主题源代码,头部基本上没有多余的加载,所所以他们的这类主题加载速度和打开速度非常的快,所以我们有必要清除不必要的JS加载,对于wp加速有一定的帮助

第二、删除不必要的插件

理论上,能不用插件不用插件,一开始优惠券生活网用的是阿里云机房,国内机房照理说速度应该比较好,但是打开速度都不如美国及香港机房速度,仔细观察才发现使用将近十多多个插件,2G内存的VPS,内存已经占用50%,流量人潮低时就有这样的负载,以后如果有流量后那肯定常打不开了?

第三、取消谷歌open sans字体加载

如果我们使用的默认主题,可能前台也会有,如果我们使用的自己制作的或者第三方的主题,一般前台是没有的,只有我们在登陆账户后的前台和后台打开变慢,主要是不便于我们自己的访问和维护。我们可以通过在后台插件搜索”disable Google Fonts“,下载安装激活这个插件就可以解决这个问题。

第四、商业化主题是否太复杂

越复杂的主题,肯定对打开速度有关的,建议使用WORDPRESS简单的主题,然后慢慢修改成自己喜欢的用户体验效果,主题太复杂的尤其是国那些有特别复杂后台的主题,这样的主题加载速度特别慢,毕竟要实现很多美丽的效果需要用到很多JS和CSS,甚至还嵌入前端框架。网站不一定要太复杂和绚丽,有时侯简单轻便,内容够有内涵和吸引力。读者更喜欢的

第五、检查是否有垃圾评论

这一点很重要,之前优惠券的百度主机一直给我发报警邮件说机器CPU超标达到400%,而且网站打开速度特别慢,刚开始以为又被人攻击,然后通过日志和后台一看,每秒钟有很多的评论在增加,即便评论内容不会显示在前台,但是会加载到数据库中,这样就增加了整个网站和机器的负载。我们需要用工具屏蔽、验证垃圾评论,尤其是软件群发的评论需要搞定他们。这时我们需要激活Akismet以及使用类似需要验证码才可以评论的功能/插件,增加软件群发评论的难度。

第六、数据库缓存文件负担

各位有没有注意到一件事,在后台写文章会时隔一段时间wp自动给我们保存成修订版本,这样的修订版本会自动保存到数据中心,在前台是看不到的,这样更新一篇文章需要花费几十分钟甚至1个小时的时候会产生很多的修订版本,这就是ID不连续的主要原因,这样在我们有500篇文章时候可能会有2000个记录文章,时间之后会产生几千几万的记录(这就是为什么很多人说开始速度还可以,以后速度越来越不好)。我们需要删除修订版本,不让修订版本添加到数据中心。

解决方法:在wp-config.php文件中添加”define(‘wp_post_revisions’, false);”代码。

第七、优化

1、WordPress Super Cache

WordPress Super Cache插件绝对优秀,不多做介绍,大多数WordPress用户都应该比较熟悉,用过便知。只是使用之后也会有些后遗症很难处理,比如一些需要跟踪确认广告代码的广告商,会无法跟踪到。网上也有一切解决方法,但我还没见过很完美的。

2. PHP Speedy WP

PHP Speedy是一个PHP脚本库,主要适用于调用了很多JS文件和CSS文件的PHP网站。而PHP Speedy WP 就是专为WordPress用户方便操作的插件。如果我们使用了很多插件,在head头部里面会有很多的js和css文件调用,使用这个插件,能加快这些东西的载入速度。

3. WP CSS

WP CSS也是一个WordPress插件。它可以gzip压缩和移除你CSS文件中的空白区。还有缓存什么什么的

4. DB Cache

DB Cache数据库缓存。此插件缓存每个数据库查询。这是非常快的,并使用小型磁盘空间缓存。我也没有尝试过这个插件,不过有很多WordPress用户推荐过这个插件。

5.使用Optimize DB

Optimize DB插件的作用在与它可以有效得优化重组你的WordPress数据库表。界面很简单,只有一个按钮:Optimize Now。

6.WPJAM

wpjam Basic 是我爱水煮鱼博客多年来使用 WordPress 来整理的优化插件,主要功能,就是去掉 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’);这个是管用的,添加以后后台首页的调用明显变慢

②使用插件clean options

③费力但是简单的清除方法:删除wp_options表,会删除一些设置,需要重新设置wordpress,推荐新手使用

1

TRUNCATE TABLE wp_options;

4.wp_posts清理

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

冗余原因:

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

解决办法:

①使用插件: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禁止了保存修订版本之后,文章序号就不会断得太厉害了。

也可以使用代码版关闭

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

2

DELETE FROM wp_postmeta WHERE meta_key = ‘_edit_lock’;

DELETE FROM wp_postmeta WHERE meta_key = ‘_edit_last’;

风险删除

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

1

2

3

DELETE FROM wp_postmeta WHERE meta_key = ‘_wp_old_slug’;

DELETE FROM wp_postmeta WHERE meta_key = ‘_revision-control’;

DELETE FROM wp_postmeta WHERE meta_value = ‘{{unknown}}’;

特殊插件删除

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

1

DELETE FROM wp_postmeta WHERE meta_key = ‘views’;

特殊操作删除

在WordPress的后台上传

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

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

解决办法:

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

1

2

DELETE FROM wp_comments WHERE comment_approved = ‘trash’;

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

2

3

4

5

6

7

8

9

10

11

OPTIMIZE TABLE wp_commentmeta;

OPTIMIZE TABLE wp_comments;

OPTIMIZE TABLE wp_links;

OPTIMIZE TABLE wp_options;

OPTIMIZE TABLE wp_postmeta;

OPTIMIZE TABLE wp_posts;

OPTIMIZE TABLE wp_terms;

OPTIMIZE TABLE wp_term_relationships;

OPTIMIZE TABLE wp_term_taxonomy;

OPTIMIZE TABLE wp_usermeta;

OPTIMIZE TABLE wp_users;

(3)插件:optimize DB

三、分享下少羽自用的清理方法

方法一

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#查询修订版本

SELECT COUNT(*) FROM wp_posts WHERE post_type=‘revision’;

#查询并删除其他表的子链

SELECT * FROM wp_postmeta WHERE post_id IN (SELECT id FROM wp_posts WHERE post_type=‘revision’);

DELETE FROM wp_postmeta WHERE post_id IN(SELECT id FROM wp_posts WHERE post_type=‘revision’);

#查询并删除其他表的子链

SELECT *  FROM wp_term_relationships WHERE object_id IN (SELECT id FROM wp_posts WHERE post_type=‘revision’);

DELETE FROM wp_term_relationships WHERE object_id IN (SELECT id FROM wp_posts WHERE post_type=‘revision’);

#删除修订版本

#delete from wp_posts where post_type=’revision’;

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

#其它查询

SELECT COUNT(*) FROM wp_postmeta WHERE meta_key=‘_edit_lock’;

SELECT COUNT(*) FROM wp_postmeta WHERE meta_key=‘_edit_last’;

SELECT * FROM wp_postmeta WHERE post_id NOT IN (SELECT post_id FROM wp_posts);

#其他删除

DELETE FROM wp_postmeta WHERE meta_key = ‘_edit_lock’;

DELETE FROM wp_postmeta WHERE meta_key = ‘_edit_last’;

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

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

方法二

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#这个删除的东西有点多,谨慎执行,建议执行前先备份,否则后果自负

SELECT * FROM wp_posts WHERE NOT(post_status = ‘publish’ AND post_type IN(‘post’,‘nav_menu_item’,‘page’));

DELETE FROM wp_posts WHERE NOT(post_status = ‘publish’ AND post_type IN(‘post’,‘nav_menu_item’,‘page’));

SELECT * FROM wp_postmeta WHERE meta_key IN (‘_edit_lock’, ‘_edit_last’, ‘_wp_old_slug’, ‘_revision-control’, ‘{{unknown}}’, ‘_wp_attached_file’, ‘_wp_attachment_metadata’);

DELETE FROM wp_postmeta WHERE meta_key IN (‘_edit_lock’, ‘_edit_last’, ‘_wp_old_slug’, ‘_revision-control’, ‘{{unknown}}’, ‘_wp_attached_file’, ‘_wp_attachment_metadata’);

SELECT * FROM wp_postmeta WHERE post_id NOT IN (SELECT id FROM wp_posts);

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

SELECT * FROM wp_comments WHERE comment_approved LIKE ‘%trash%’;

DELETE FROM wp_comments WHERE comment_approved LIKE ‘%trash%’;

SELECT * FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments);

DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments);

OPTIMIZE TABLE wp_commentmeta;

OPTIMIZE TABLE wp_comments;

OPTIMIZE TABLE wp_links;

OPTIMIZE TABLE wp_options;

OPTIMIZE TABLE wp_postmeta;

OPTIMIZE TABLE wp_posts;

OPTIMIZE TABLE wp_term_relationships;

OPTIMIZE TABLE wp_term_taxonomy;

OPTIMIZE TABLE wp_termmeta;

OPTIMIZE TABLE wp_terms;

OPTIMIZE TABLE wp_usermeta;

OPTIMIZE TABLE wp_users;

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

四、必看内容

执行前先备份,如果你不会折腾建议你放弃吧!如果你数据库垃圾数据过多又想折腾,但不会可以联系少羽,让少羽协助你折腾。

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

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

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

数据库清理插件推荐

1.WP Clean Up

2.WP-Sweep

3.WP-Optimize

这里说一下少羽用的是wp Clean Up,当然并不是一定要你们用和我一样的,这些插件都是选择安装一个即可

总结

wp的访问速度是在于优化,并不是在于服务器配置,服务器配置再高, 你不优化也会变卡

这篇文章送给Wordpress新手,希望你们的网站更加精彩

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年5月2日 01:15:03
下一篇 2024年5月2日 01:18:00

相关推荐

  • c语言输入数组,C语言输入数组的方法

    如何用c语言从键盘输入10个数存入数组并求和? 1、用C语言编写一段程序,用来输入10个整数保存到数组中,求出这10个整数的和并输出。 2、,数组是相同数据类型的元素的集合。 2,数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。 3,数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。 3、void main(){ fl…

    2024年5月23日
    5100
  • 学习黑客知识的网站,自学黑客网站

    麻烦大家推荐个黑客导航网站,像hao123那样的,谢谢! 1、999 369网址之家. 3309网址导航. 229229网址导航. 酷酷123网址之家等。 2、网址导航的鼻祖:hao123,速度快、无广告。(推荐)现在世界排名最高的网址导航:265,速度可以、但界面复杂、有广告,网上传言它有病毒。 3、您好、就导航网站而言,给您推荐使用 或者是hao.360…

    2024年5月23日
    4200
  • linux下运行asp,linux运行asp网站

    Linux下安装Apache+ASP环境的原因 .如果你安装的Linux版本中带用Apache的话,就在选择所要安装的服务 器的时候,将httpd这个服务选上,Linux安装程序将自动完成Apache的安装工 作,并做好基本的配置。 一是:在安装Apache HTTP Server的时候,如果我们机器上的80端口已被占用,需要选使用8080端口来安装那个选项…

    2024年5月23日
    4700
  • 团购网站源码java,方维社区团购源码

    请问有java的电商系统的完整源码文档吗(java商城系统源码) 1、Smilehouse Workspace 是一个采用 Java 开发的电子商务应用程序。用来做产品、定案和客户信息管理。 2、现在国内唯一做的正式商业化能用的免费开源电商系统只有ShopsN。注意是纯粹免费,允许商业运营的。至于那种打着免费开源商城的系统,多如牛毛,也就没什么介绍的必要了。…

    2024年5月23日
    4000
  • java的split方法的源码,如何理解java中的split方法

    请问java中split()方法怎么用? 1、split 的实现直接调用的 matcher 类的 split 的方法。“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。 2、split() 方法用于把一个字符串分割成字符串数组。 语法 stringObject.split(separator,howmany) 参数与描述 separato…

    2024年5月23日
    4500
  • linux增加目录空间,linux目录空间不足时的扩容方法

    Linux下调整根目录和home目录的空间大小 1、由此可见,home减少了100G空间,根目录增加了100G空间。 2、备份 home 查看未调整前的根目录容量,可以看到默认是分配 50G,但大都数的软件安装都默认在根目录 所以这里将home的容量分给根目录。 3、首先,你得有空余的空间,比如,你发现你的/home所在分区还有好多G的剩余空间,那你就可以把…

    2024年5月23日
    5300
  • java怎么实现多个接口,java多个接口有相同的方法

    java中接口可以实现多个接口吗? 1、但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。 2、首先,java中的接口别说实现多个接口了,一个接口也不能实现。因为接口中的方法是没有方法体的,所以不能实现任何接口。其次,一个接口可以继承多个接口。 3、java中没有多继承(就是不能继承多个父类),只有多重继承。 java怎么定…

    2024年5月23日
    3500
  • java截取字符串的方法,JAVA截取字符串中的一段字符

    java怎么获取字符串中指定的值? 在一个String字符串中 查找某个汉字的索引 可以使用str.indexOf(字) 获取在字符串中的索引位置,同样索引从0开始,若字符串中没有该汉字, 返回-1就行了。 用substring.具体用法:字符串截取,substring(int beginindex)返回一个新的字符串,它是此字符串的一个子字符串。subst…

    2024年5月23日
    4000
  • java字符串反向遍历,java 字符串反转方法

    java请问如何用reverse().toString();进行倒序输入字符串? 其实不需要用for循环,StringBuffer中已经提供了倒置的方法,貌似方法名也是叫reverse。 方法一:利用String类的toCharArray(),再倒序输出数组。 用两个StringBuilder,一个作全部的、一个作每一行的。 String类型对象的内容是不可…

    2024年5月23日
    4800
  • java调用函数的方法,java中调用函数的方法

    如何实现Java调用C或C++函数 1、(1)创建DLL文件使用某一种C/C++开发工具创建DLL文件,实现某一功能,供Java调用,例如本文在此使用Visual studio 2005创建一个名为testdll的动态库文件。(2)使用JNIJNI是Java Na***tive Interface的缩写,中文为Java本地调用。 2、首先创建Java文件 H…

    2024年5月23日
    4400

发表回复

登录后才能评论



关注微信