记一次wordpress性能优化

标签: wordpress 性能优化 | 发表时间:2014-05-02 17:54 | 作者:tt361
出处:http://blog.csdn.net


wordpress真的很流行,但是我真的不认为它的性能好,尤其当数据超过几万十几万的时候。当然作为一个个人博客来说超过几万的数据是一件很难的事情。可我现在用wordpress作为CMS使用,数据库中有十几万条数据。

新租的云主机配置为:2核2GHZ的CPU、1G内存、CentOS6.4操作系统。安装完Apache、php、MySQL后导入数据打开首页一看,竟然用了十几秒的时间才打开首页。经过研究发现主要是php生成页面很慢,猜测可能是数据库查询比较慢,另外页面加载也有需要优化的地方。因此我做了一系列的优化,主要集中在以下几点:

1.数据库参数调整。

2.启用数据库查询缓存。

3.增加索引以提高查询效率。

4.使用eaccelerator提高php执行速度。

5.优化文件加载。


第一步:调整MySQL参数。

调整参数我是参考my-medium.cnf文件进行的,该文件中有详细的说明,在此不再详细说明。


第二步:打开MySQL的通用查询日志和慢查询日志。

打开方法在MySQL配置文件中加入如下两条配置项并重启MySQL服务使其生效。

log=/var/log/mysql/log.log
long-query-time=0.02
slow_query_log=/var/log/mysql/slow.log

刷新几次页面并分别观察两个日志。

通过观察通用查询日志发现每个页面生成都要有很多次数据库查询,其中大部分是不需要每次打开一个页面就需要查询的,如从wp_options表中获取option。所以需要开启MySQL的查询缓存,方法为在MySQL配置文件中加入如下配置项:

query-cache-type=1 # 0:不启用查询缓存;1:默认缓存,除非在SELECT语句中指定SQL_NO_CACHE;2:默认不缓存,除非在SELECT中指定SQL_CACHE;
query_cache_limit=3M # 缓存的最大单个查询结果集。
query_cache_size=64M # 查询缓存可用的最大内存。
query_cache_min_res_unit=0k # 缓存的最小查询结果集。
query_cache_wlock_invalidate=0 # 1:写锁定发生在表上时该表的查询缓存立即失效; 0:写锁定发生在表上时写锁定期间查询缓存仍然有效。

重启生效后刷新几次页面以及打开其他页面,页面的整个加载时间在两秒左右,其中页面生成时间在一秒以上,相比之前来说可以说是立竿见影。

query_cache_size参数其实并不需要这么大,对于wordpress来说我只是想缓存一些结果集不易变的细碎查询,对于文章详细页和文章列表页做缓存实在是不现实,所以此处16M足矣(当时我给的太大了)。

不必要的WHERE条件


第三步:增加索引

根据查询WHERE条件中的字段添加索引。


第四步:提高PHP执行效率。

众所周知,PHP的执行效率相对来说还是比较低的,wordpress又是一个比较复杂的博客系统,性能一直马马虎虎。我们自己动手优化wordpress代码不怎么现实,所以我想到了用eaccelerator来提高PHP执行效率。eaccelerator的官方网址为 https://github.com/eaccelerator/eaccelerator/。其官方简介如下

eAccelerator is a free open source PHP accelerator and optimizer for PHP. It increases the performance of PHP scripts by caching them in compiled state, so the overhead of compiling  is  almost completely eliminated. It also optimizes the scripts to speed up execution. eAccelerator typically reduces server load and increases the speed of your PHP code by 1-10 times.

官方文档中有详细的安装和配置方法,请参考官方文档那个进行。

安装完成后又刷新了一下页面,生成页面的速度降低到两三百个毫秒。

两三百个还秒对于当前使用的主机我已经很满意了。


第五步:页面加载也要做一些优化,css和js该合并的合并,该压缩的压缩。图片该合并的合并,不必要的资源停止加载。对于现代浏览器支持的manifest缓存也适当的应用上了,将图片、css、js等静态资源直接缓存到客户端。


后记:

我也找了一些wordpress优化插件,如WP Super Cache等,虽然有一定的效果,但是依然没有痛快的感觉。

另外对于所有的php+MySQL应用来说这些经验都是可以借鉴的。




作者:tt361 发表于2014-5-2 9:54:49 原文链接
阅读:2 评论:0 查看评论

相关 [wordpress 性能优化] 推荐:

记一次wordpress性能优化

- - CSDN博客推荐文章
wordpress真的很流行,但是我真的不认为它的性能好,尤其当数据超过几万十几万的时候. 当然作为一个个人博客来说超过几万的数据是一件很难的事情. 可我现在用wordpress作为CMS使用,数据库中有十几万条数据. 新租的云主机配置为:2核2GHZ的CPU、1G内存、CentOS6.4操作系统.

WordPress 性能优化:为什么我的博客比你的快

- - 我爱水煮鱼
很多同学都说 WordPress 很慢,前面我发布的插件 WPJAM Debug,可以在页脚显示当前页面有多少条 SQL 查询,页面生成花了多少时间,并且把 SQL 按照执行顺序和按照耗时列出,可以通过这样的方式帮你分析 WordPress 哪里慢. 但是 WPJAM Debug 只是分析 WordPress 效率,具体涉及到 WordPress 性能优化,还需要自己动手来做,今天我就讲讲这一段时间来我工作的网站: App每日推送(也是基于 WordPress 构建)是怎么优化的.

WordPress SEO 宝典

- luckerme - 我爱水煮鱼
最基本的搜索引擎优化(SEO)是很简单的,而 WordPress 程序本身的一些优势使得 SEO 变得更加容易,比如我爱水煮鱼有超过 70% 的流量来自搜索引擎,所以做好 SEO 就是流量的保证,这篇文章就给大家介绍下在 WordPress 博客中最基本的一些 SEO 要求,希望能够帮助到你. 简单来说 SEO 分为页面优化和链接建设两大部分,页面优化是基础,而链接建设则是重点,两者缺一不可.

WordPress 技巧

- - CSDN博客互联网推荐文章
WordPress字体设置方法详解.          WordPress开源程序功能越来越强大,未来我们不仅仅可以使用wordpress制作个人博客,还可以使用wordpress程序制作CMS内容管理系统. 很多 Wordpress主题SEO优化的非常好,而且还附带了一些adsense广告位置,让不懂SEO以及代码修改的朋友轻松解决博客优化以及广告位放置问题.

WordPress SEO 宝典

- - 人人都是产品经理
最基本的搜索引擎优化(SEO)是很简单的,而 WordPress 程序本身的一些优势使得 SEO 变得更加容易,比如我爱水煮鱼有超过 70% 的流量来自搜索引擎,所以做好 SEO 就是流量的保证,这篇文章就给大家介绍下在 WordPress 博客中最基本的一些 SEO 要求,希望能够帮助到你. 简单来说 SEO 分为页面优化和链接建设两大部分,页面优化是基础,而链接建设则是重点,两者缺一不可.

MySQL性能优化

- sun - IT程序员面试网
在笔试面试中,尤其是像百度,淘宝这些数据量非常大,而且用LAMP架构的公司,数据库优化方面就显得特别重要了. 此外,除了数据库索引之外,在LAMP结果如此流行的今天,数据库(尤其是MySQL)性能优化也是海量数据处理的一个热点. 下面就结合自己的经验,聊一聊MySQL数据库优化的几个方面. 首先,在数据库设计的时候,要能够充分的利用索引带来的性能提升,至于如何建立索引,建立什么样的索引,在哪些字段上建立索引,上面已经讲的很清楚了,这里不在赘述.

Hebernate 性能优化

- - 企业架构 - ITeye博客
文章分为十三个小块儿对Hibernate性能优化技巧进行总结性分析,分析如下:. 一、在处理大数据量时,会有大量的数据缓冲保存在Session的一级缓存中,这缓存大太时会严重显示性能,所以在使用Hibernate处理大数 据量的,可以使用session. clear()或者session. evict(Object) 在处理过程中,清除全部的缓存或者清除某个对象.

Hbase 性能优化

- - CSDN博客云计算推荐文章
因 官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果. 所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正. 默认值:3分钟(180000ms). 说明:RegionServer与Zookeeper间的连接超时时间.

JavaScript性能优化

- - ITeye博客
互联网泡沫让投资者长了记性:态度更加谨慎.         如今主流浏览器都在比拼JavaScript引擎的执行速度,但最终都会达到一个理论极限,即无限接近编译后程序执行速度. 这种情况下决定程序速度的另一个重要因素就是代码本身. 在这里我们会分门别类的介绍JavaScript性能优化的技巧,并提供相应的测试用例,供大家在自己使用的浏览器上验证, 同时会对特定的JavaScript背景知识做一定的介绍.

Mysql性能优化

- - 数据库 - ITeye博客
MySQL性能优化.   性能优化是通过某些有效的方法来提高MySQL的运行速度,减少占用的磁盘空间. 性能优化包含很多方面,例如优化查询速度,优化更新速度和优化MySQL服务器等.   数据库管理人员可以使用SHOW STATUS语句来查询MySQL数据库的性能. 语法:SHOW STATUE LIKE ‘value’;其中value参数是常用的几个统计参数.