目录:
- 1、wordpress 源代码中内嵌了一些无法访问的url拖累访问速度
- 2、wordpress 源代码中内嵌了一些无法访问的url拖累访问速度?
- 3、如何清理优化wordpress数据库
- 4、如何在WordPress后台直接优化MySQL数据库
wordpress 源代码中内嵌了一些无法访问的url拖累访问速度
数据库也是影响 WordPress 运行速度重要的因素之一,频繁调用、查询数据库会拖累网站整体的加载速度。今天大挖结合自己的实践操作来
优化一些 WordPress 数据库不必要的查询次数。希望可以帮助到大家有效提升博客的速度。
先给大家介绍一段可以在wordpress主题底部显示当前运行时 WordPress 数据库查询次数和内存使用情况的代码:
1
2
3
4
5
6
7
8
9
10
//显示数据库查询次数、查询时间及内存占用的代码
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 : "" ;
}
add_action( 'wp_footer', 'performance', 20 );
上面的代码,直接放到主题function.php里即可。
优化WordPress 数据库查询:首先需要在 WordPress 的wp-config.php里进行优化操作,具体配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
define('COOKIE_DOMAIN', '');
//设置地址而不是服务器检查,这将减少服务器查询
define('WP_HOME', '');
define('WP_SITEURL', '');
//优化文章修改历史: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/wa');
define('STYLESHEETPATH', '/wp-content/themes/wa');
如果你没有使用缓存插件,开启WP自带的缓存(Cache)功能,并设置缓存时间,是非常必要的事情。
1
2
3
define('WP_CACHE, true); // 打开 WordPress 自带的缓存功能
define('ENABLE_CACHE', true); // 缓存开关
define('CACHE_EXPIRATION_TIME', 3600); // 缓存时间间隔
注:3.0后版本要开始缓存在/wp-includes/default-constants.php中开启,切记哦!
wordpress程序自身会经常向wordpress.com的服务器发送请求传送数据,我们可以通过设置wp-config.php来屏蔽此类外部请求的发送,在wp-config.php添加如下代码:
1
2
//禁止WordPress程序发出对外请求
define('WP_HTTP_BLOCK_EXTERNAL', true);
值得注意的是我们在加入以上代码后你的网站将无法对任何一个外部服务器发出请求,如果站长朋友们为了加速网站收录使用了ping功能,加上以上代码后ping功能将会失效。解决方法:我们可以设置对外请求白名单即可解决ping失效问题,代码如下:(以百度ping为例)
1
define('WP_ACCESSIBLE_HOSTS', 'ping.baidu.com');//仅允许 WordPress 向ping.baidu.com发送请求
通过 WordPress 的wp-config.php配置完后大家 可以用本文开头介绍的代码在源代码里查看和对比一下是不是数据库查询次数和内存使用量有所改善。还有就是要养成提前备份的好习惯,否则后果自负了!
wordpress 源代码中内嵌了一些无法访问的url拖累访问速度?
wordpress必装插件,wordpress网站装好了之后,为了更好的优化网站少不了安装插件优化。今天给大家推荐wordpress必装插件以及工具。只需输入域名选择wordpress主题或模板(内置90000套主题模板选择)。一个网站就这样搭建完成。软件上还覆盖各种主题功能以及全套SEO插件。等下会以图片的形式给大家展示。大家注意看图。一键建站+行业内容采集+伪原创+主动推送给搜索引擎收录。
网站地图,又称站点地图,它就是一个页面,上面放置了网站上需求搜索引擎抓取的一切页面的链接(注:不是一切页面)。大多数人在网站上找不到本人所需求的信息时,可能会将网站地图作为一种弥补措施。搜索引擎蜘蛛十分喜欢网站地图。
制作网站地图的工具十分多,如sitemapX,其他软件功用大同小异。网站地图放置在网站的根目录,有一份或者多份,只要一份的状况是页面比较少,网站地图文件较小,蜘蛛读取速度快,反之蜘蛛读取速度慢,所以分开多个文件放置,不由于读取问题影响权重。另外,robots协议文件控制搜索引擎抓取范围、时间频率等,所以应该把网站地图放在robots的最后面,先恪守robots抓取范围。
出现404错误是在网站页面被收录了之后,后面又被删除,在搜索引擎再次点击即出现404错误。这对用户体验来说是相当糟糕的,但404错误又是无法避免的,中小型网站页面数量不会很多,但是大型门户网站,论坛等,数量就多了。404在seo优化中,尤其是在跳出率和PV上,起到关键作用。
什么是404错误
先看看seo名词解释:HTTP 404或Not Found错误信息是HTTP的其中一种“标准回应信息”(HTTP状态码),此信息代表客户端在浏览网页时,服务器无法正常提供信息,或是服务器无法回应且不知原因。
出现404错误的影响
自定义404错误页面是增强用户体验的很好的做法,但在应用过程中往往并未注意到对搜索引擎的影响。 搜索引擎蜘蛛在请求某个URL时得到“404”状态回应时,即知道该URL已经失效,便不再索引该网页,并向数据中心反馈将该URL表示的网页从索引数据库中删除,删除过程有可能需要很长时间;
搜索引擎得到“200”状态码时,则会认为该url是有效的,便会去索引,并会将其收录到索引数据库,结果是这两个不同的url具有完全相同的内容,搜索赢球认为这是复制的网页。轻则被搜索引擎降权,重则会K掉网站。静态页面为路径的网站,在优化和删除某些后台编辑的文章时,一定要把网站的生成静态页面(完整路径的页面)删除,同时向百度进行死链提交。
这里要提到特殊的tag功能,dedecms能按照文章关键字自动生成tag标签。如果tag标签也被收录,而你删除了某些tag标签,都会弹出“dedecms提示:该标签已删除”的错误页面,会产生非常多重复且低质量的页面。由于不是返回404,无法通过提交404错误,删除这些快照。如果你有大量的tag标签页被收录,404页面的设置方法很多,以万网虚拟机为例,Apache下设置404错误页面。方法很简单,只需在.htaccess 文件中加入如下内容即可:ErrorDocument 404 /notfound.php。也可在万网空间设置里面设置404页面,只要选好404模板。
制作死链文件筛查网站内部存在的死链,并将这些死链页面设置成为404页面,即百度访问它们时返回404代码。将需提交的死链列表制作成一个死链文件,制作方法请参阅百度错误页面提交帮助文档(与sitemap格式及制作方法一致)
如何清理优化wordpress数据库
一、数据库表清理
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′); 这个是管用的,添加以后后台首页的调用明显变慢
②使用插件clean options
③费力但是简单的清除方法:删除wp_options表,会删除一些设置,需要重新设置wordpress,推荐新手使用
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的状态的
这里我们主要是要 已经发布的文章、页面和菜单,除此之外的都可以删除,当然可以根据自己的需求选择删除哪些
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)很多主题、插件没有做好及时清除的工作
解决办法:
① 手动删除
规矩删除
删除文章中不存在文章的元信息
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT post_id FROM wp_posts);
安全删除
删除_edit_lock和_edit_last条目是安全的,所以这里给出SQL语句
DELETE FROM wp_postmeta WHERE meta_key = ‘_edit_lock’;
DELETE FROM wp_postmeta WHERE meta_key = ‘_edit_last’;
风险删除
除了这两条还执行了一些其他语句由于有些风险:自己酌情考虑
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插件会记录每个文章的访问数,如果不需要,可以删除
DELETE FROM wp_postmeta WHERE meta_key = ‘views’;
特殊操作删除
在WordPress的后台上传图片或者附件后会在wp_postmeta中生成_wp_attached_file和_wp_attachment_metadata两个项,wp_posts也会记录附件的信息。如果使用FTP工具上传文件,表中就不会有这些信息
DELETE FROM wp_postmeta WHERE meta_key = ‘_wp_attached_file’;
DELETE FROM wp_postmeta WHERE meta_key = ‘_wp_attachment_metadata’;
洁癖删除
这几条条语句执行完毕能够删除掉95%以上的数据,算的上是极限优化了,最后考虑到这个数据表并不是很重要,有洁
净癖的人可以尝试清空这个表,当然我测试清空表会让一些原本的数据丢失
TRUNCATE TABLE wp_postmeta;
6. wp_commentmeta清理
冗余原因:
(1)评论被删除之后,其在wp_commentmeta中的数据理应被删除,在系统中多数情况是系统自动删除,但是由于人为删除文章,系统不知道被删除,就不会删除wp_commentmeta表中的数据,造成冗余
(2)很多主题、插件没有做好及时清除的工作
解决办法:
一下语句去除没有用的数据,如果评论中没有此条评论,那么在wp_commentmeta也没有意义,好像wordpress在清空回收站的时候会删除wp_commentmeta相应的数据。如果不出意外,下面的操作我们应该不需要做
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里面会记录评论被删除的时间,这些信息用处不是很大,当评论被从回收站删除之后,这些删除的时间意义就不是很大,就可以删除了,所以用下面的语句一样达到删除的目的
DELETE FROM wp_commentmeta WHERE meta_key LIKE ‘%trash%’;
如果直接全部删除wp_commentmeta,影响不会太大,这里面不会涉及重要的数据
TRUNCATE TABLE wp_commentmeta
7. 总结
其实大部分无用的数据均在这几张表中,清理过后应该不会又太多的冗余数据了。但这里没有针对特殊插件或主题做数据库清理,有时这些插件和主题会悄悄动了一些数据库表,这样给清理带来很大难度,需要看代码才知道哦
二、数据库表优化
原理:数据库优化不
涉及数据的删除,是将数据库的表的状态调整好。在使用phpmyadmin时候,或许您会看到数据库表后面有多余xxMB的字样,这个指的是那些已经分配
给当前表但是却没有使用的空间。这个多余是没有什么害处的,他不会占用你的空间。当删除一个表的一部分记录时,这些记录仍然保持在一个linked
list 中,当插入新数据时会再次使用这些老纪录的位置。所以删除纪录会闲置一些空间造成你说的“多余”
优化:
(1)在phpmyadmin手动 优化或者修复表即可
(2)运行SQL:
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语句进行清理与优化的,附我的优化SQL语句(我的表前缀是wp1):
DELETE FROM wp1_posts WHERE NOT(post_status = ‘publish’ AND post_type IN(‘post’,'nav_menu_item’,’ page’));
DELETE FROM wp1_postmeta WHERE meta_key in (‘_edit_lock’,
‘_edit_last’, ‘_wp_old_slug’, ‘_revision-control’, ‘{{unknown}}’,
‘_wp_attached_file’, ‘_wp_attachment_metadata’);
DELETE FROM wp1_postmeta WHERE post_id NOT IN (SELECT id FROM wp1_posts);
DELETE FROM wp1_comments WHERE comment_approved like ‘%trash%’;
DELETE FROM wp1_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp1_comments);
OPTIMIZE TABLE wp1_commentmeta;
OPTIMIZE TABLE wp1_comments;
OPTIMIZE TABLE wp1_links;
OPTIMIZE TABLE wp1_options;
OPTIMIZE TABLE wp1_postmeta;
OPTIMIZE TABLE wp1_posts;
OPTIMIZE TABLE wp1_terms;
OPTIMIZE TABLE wp1_term_relationships;
OPTIMIZE TABLE wp1_term_taxonomy;
OPTIMIZE TABLE wp1_usermeta;
OPTIMIZE TABLE wp1_users;
如何在WordPress后台直接优化MySQL数据库
为什么需要优化数据库
随着
MySQL
的使用,包括
BLOB
和
VARCHAR
字节的表将变得比较繁冗,因为这些字段长度不同,对记录进行插入、更新或删除时,会占有不同大小的空间,记录就会变成碎片,且留下空闲的空间。就像具有碎片的磁盘,会降低性能,需要整理,因此要优化。
如何优化
WordPress
数据库
而
WordPress
使用的数据库正是
MySQL,所以当你觉得
WordPress
速度比较慢的时候,对
MySQL
进行优化下,可以相当程度上提高
WordPress
的速度。我们可以通过
PHPMyAdamin
对
MySQL
表进行优化:
在
PHPMyAdmin
优化
MySQL
表
使用
Optimize
DB
插件在WordPress
后台直接优化
MySQL
数据库
但是如果每次都要进入
PHPMyAdmin
优化
MySQL表,这样是非常麻烦的,今天推荐的插件:Optimize
DB
就能让你在
WordPress
后台直接优化
MySQL
数据表。
该插件安装非常简单,上传激活即可,激活之后,在
WordPress
后台
工具(Tools)
Optimize
DB
就能优化
MySQL
数据表了:
在
WordPress
后台优化
MySQL
表
上图中的
overhead
就是数据库冗余,点击
Optimize
Now,就可以优化。
文:我爱水煮鱼