[转载]wordpress网站提速优化技巧

网 站的加载速度是非常重要的,如果一个网站别人要好半天才打开的话,除非这个人很有耐性或者你的网站别人非看不可,亦或者这个人是你的追求者。否则极大的可 能是再也不会来第二次甚至连第一次加载没完成就关闭的(我就是这样的人)。下边的10个方法就给出了一些很好的优化网站速度的方法,其中一些仅适用于 WordPress网站。

1:检查链接。
有时候你发现在管理自己网站的时候,速度非常慢,而自己在别处的朋友却反映你的网站速度不错。这个时候就要考虑自己的问题了,可能是你和网站服务器之间的链接不好。使用tracert命令来看看自己到服务器的网络状况(在Linux下相同功能的命令是traceoute)。有关tracert命令的工作原理。点击这里
测试方法是:Windows系统下点击开始–运行–输入CMD回车—在弹出的窗口中输入  
tracert www.wenzhu.org
回车然后观察其数据状况,显示的数据是以毫秒数(ms)表示你到服务器之间的连接时间。如果数字太高,那么就考虑更换你自己的网络或者换服务器吧(貌似后者更容易)。
也有可能是带宽的问题,一个典型的WordPress页面大约是150kb,意味着使用modern的用户需要下载35秒才能完全下载完毕(没办法,原文说的是modern用户,没给宽带用户数据==)。
2:检查你的WindowsVista系统(如果你在用Vista的话)
罕见的情况下,Vista下访问WordPress网站会影响速度。如果你使用的Vista并怀疑因此导致访问WordPress速度慢的话,那么看这个文章(英文,改天翻译)。
3:检查插件(plugin)
WordPress插件导致网站加载速度慢是很多人都知道的事儿。如果使用过多的插件,将会大大影响网站的速度。而某些插件,即使在只使用其一个的时候也 会大大降低网站速度。目前已经报道会大大降低网站速度的著名插件已经有Popularity contest,(用来显示最热文章),aLinks (用来自动给关键字添加链接,我正在用的–!), @Feed(用来优化Feed的).所以发现网站加载缓慢的时候,检查插件是一个很好的方法。
不过检查的方法就笨了一点。停掉(deactivate)所有插件。然后观察网站速度,然后再一个个地激活(activate)插件,每激活一个就观察网 站速度,直到找到那个致病的插件(疯狂使用插件的Blogger们有福了XD)。删除它或者找其他类似插件代替。如果你比较有开源精神,那么发消息给插件 作者,给他报告错误,让他修正。
4:检查主题(Theme)
主题也会影响网站速度。如果一个主题包含大量的图片、自带插件、JavaScript(多到Chrome的V8加速器也起不了多少作用)等,将会大大降低 网站的速度。检查你当前主题的images文件夹里边的图片数量和大小。检查该主题的functions.php,这个文件里可能会含有一些可以起到插件 作用的代码,如果过多或者有问题都会导致网站速度下降。
WordPress自带的default主题是最快的主题。如果你的服务器网络不太好,最好就使用它。另外也不要给自己的网站加上过多的扩展代码,例如统计代码、共享文章等都是基于JavaScript的。这都会影响到网站的速度。
如果你发现是主题导致的速度变慢。那么,这儿有一个可以debug主题代码的Firefox插件FireBug,下载和使用方法点击即达。将其安装到Firefox或者Flock2.0上以后,再打开你的网站。就能快速准确地检查出你主题那些元素导致加载速度变慢。
5:优化数据库表
你应该定期检查、优化自己的网站数据库来让网站运行流畅。这里建议使用一个插件wp-DBManager。此插件提供了备份数据库等功能,设置好以后就不 用再管,它可以自动运行。当然,很多网站都使用的是phpmyadmin来管理数据库,定期进去看看自己的数据库,发现错误并修复它们是个很好的方法(不 过这个方法面向的是对数据库有一定了解的用户,不了解的用户最好不要尝试。修改数据库非常危险,无论做什么操作,先备份是个好习惯。免得有可能出现致命错误导致整个网站数据全部丢失的惨重后果)
6:关闭“文章修正”(即postrevisions)功能

首先说明,国内的多数WordPress博客用户大概受某名博的影响(该博客一篇臭骂postrevisions功能的文章被大量转载),非常反感这个功 能。认为其造成数据库出现大量冗余数据,导致文章编号不连贯等。这个功能是设计用来跟踪文章修改的,每一次修改文章按下save按钮以后,都会对当前内容 保存一个版本,而且这个版本会占用一个编号,在数据库中是post_ID这一列。实际上这个功能对于多用户的博客是很有用处的,多人合作写博客,成员们可 以方便地看到每篇日志的修改记录,特别是在线编辑的情况,可以防止掉电断网等造成的损失。对于单用户博客就显得没有什么用处。而且,国内用户都使用中文文 章标题,因此不能像英文用户那样直接使用文章标题作为文章地址,大多数人(包括我)都是使用文章编号来作为网址。所以很多人很注重文章编号的连贯。
说了一大堆废话。关闭postrevisions功能的方法是。在WordPress的配置文件wp-config.php文件里加入如下代码
define(’WP_POST_REVISIONS’,false);
这句代码最好加在define (’WPLANG’, ”);这句代码的后边面,前边这个是定义WordPress的语言的语句。
如果你的网站在没有关闭该功能的情况下运行很长时间了,那么数据库里边应该有很多冗余数据了。删除这些数据的方法有两种,一是使用上边介绍的WP-DBManager插件。二是直接进入数据库,运行以下的SQL代码:
DELETE FROM wp_posts WHERE post_type=‘revision’;
这将删除所有的revision数据。再次提醒,牵扯到数据库的操作,无论你多么有把握,最好事先备份一下数据库。如果没把握,最好找一个懂行的人来帮 你。如果找不到,就留着吧,这些数据除了稍微减缓查询数据的速度外没有什么坏处。而就一般的个人博客而言,减缓的这点速度几乎微不足道。
7:使用缓存(cache)
WordPress没有默认开启缓存。所以每次打开网站,都会直接从数据库中读取数据来显示。这样如果你的网站不是每小时更新一次(–)的话,直接读取数 据显示就显得又慢又浪费服务器资源。使用缓存可以将未改变的查询结果存储起来。加载网站时直接读取缓存中的数据,不用去访问数据库,能大大提高加载速度, 减少对服务器资源的占用。(数据库的查询是非常消耗CPU和内存的)。打开缓存的方式有很多种:
7.1使用插件
这是最简单的开启缓存方法。这里推荐著名的WP Super Cache(点击下载)这个插件。它功能强大,易于安装,有很多选项让用户自定义。这里还有WP Super Cache 优化技巧(英文)。
7.2优化MySql数据库
该方法仅仅适用于使用自有服务器,或者可以自己直接改变MySQL数据的用户(相信大部分人都使用的虚拟主机,因此该方法可以不看)。
MySQL可以在自己的缓存中保存查询结果。不过一般不默认打开该功能。开启方法是编辑MySQL配置文件(通常是/etc/my.cnf),在该文件中加入以下语句:
query_cache_type=1
query_cache_limit=1M
query_cache_size=20M

在重启MySQL服务器后,将在MySQL中开启20M的缓存空间用来存放缓存数据。
检查该功能是否开启成功的方法是,在MySQL中运行以下语句:
SHOW STATUS LIKE‘Qcache%’;
如果你看到类似以下结果(后边的数字每个人的都会不一样),证明开启成功:
Qcache_free_blocks 718
Qcache_free_memory 13004008
Qcache_hits 780759
Qcache_inserts 56292
Qcache_lowmem_prunes 0
Qcache_not_cached 3711
Qcache_queries_in_cache 1715
Qcache_total_blocks 4344

如果修改my.cnf中的这一行中的数据到类似250这么大的数字来增加并行链接也可以提高MySQL在这方面的性能:
max_connections=250
7.3开启PHP代码缓存(这个一般用户也可以不看)
PHP是解释型的语言。WordPress是用PHP写(我废话真多)。这意味着,每次PHP代码开始执行,都要先编译一次才能在服务器上运行。这个编译结果也是可以缓存的。要对PHP服务器开启该功能,可以通过安装eAccelerator(下载、介绍直接点击即可见)这样的插件来实现。
安装方法如下(使用于Linux服务器):解压下载下来的eAccelerator包。然后从shell进入解压后的目录。执行以下命令:
phpize
./configure
make
makeinstall

这样就能安装完毕。然后再建立缓存文件夹用来存放缓存,执行以下命令:
mkdir/var/cache/eaccelerator
chmod0777/var/cache/eaccelerator

最后对PHP开启该插件。在PHP的配置文件php.ini文件(该文件通常是/etc/php.ini或者/usr/lib/php.ini)中加入以下代码:
extension=”eaccelerator.so”
eaccelerator.shm_size=”16″
eaccelerator.cache_dir=”/var/cache/eaccelerator”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=””
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”0″
eaccelerator.shm_prune_period=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″

保存之后就能立刻生效了。
提示1:WPSuperCache可以同时和eAccelerator一起运行并发挥出更好的效能。
提示2:如果你想要更变态的缓存手段,那么尝试这个插件:WP Super Cache and eAccelerator plugin.看名字就知道它是干啥的了吧。
提示3:Apache服务器的优化在这里就不说了,如果你对其感兴趣,点击这里
提示4:在命令行运行以下语句可以方便地看到更改配置以后服务器的变化:
ab-n1000http://your.server/
8:“MySQL server has gone away”解决方法
这个MySQL数据库错误通常是一些配置导致,表现在网页运行缓慢甚至没有反应,通常是在WordPress的后台管理页面中出现。其解决方法在这里。一般升级WordPress可以解决一下,但是并不能完全解决。希望以后WordPress的开发人员们可以解决该问题。
9:解决发表文章时候的一些问题
如果你有过在发表一篇文章或者在更新某些文章时候出现管理面板运行缓慢甚至不响应的问题,那么很有可能你碰到了“mod_securitywall”。
ModSecurity是Apache服务器用来提高网站安全的一种机制。但是有时候,你在发表或者修改文章的时候产生的SQL查询会被其定义为不安全行为甚至把该操作列进黑名单。这样一来你的网站就会变得非常缓慢。
检查是不是该原因导致网站速度缓慢,在shell中运行类似以下命令以产看Apache服务器错误日志:
tail-f/usr/local/apache/logs/error_log
看看是否有类似以下记录:
ModSecurity: Access denied with code 500 (phase 2) … [id "300013"] [rev "1"] [msg "Generic SQL injection protection"] [severity "CRITICAL"] [hostname  www.prelovac.com"] [uri “/vladimir/wp-admin/page.php”
该代码表示某个页面被阻止了,因为一个编号为300013的安全规则。要解决该问题,将出问题的页面从黑名单中移除即可:修改Apache的配置文件(通 常是:/usr/local/apache/conf/modsec2/exclude.conf),添加如下语句:
<LocationMatch“/vladimir/wp-admin/page.php”>
SecRuleRemoveById 300013
</LocationMatch>

10.其他导致发表文章缓慢的原因
原因一:RSSPing或者pingback超时可能导致网站运行缓慢(WordPress有pingback功能,当别人引用或者RSS抓取你的某个文 章的时候,会返回一个Ping信息以告诉你哪儿引用了你的文章,并且默认情况下,会在控制面板中显示出一个ping列表,通常在控制面板首页。当其中某个 出现超时就有可能引起你的后台运行缓慢)。
原因二:文章的pingback也能导致网站运行缓慢。别的网站有一个指向你某文章的链接,WordPress就会默认在这个文章后边显示引用你文章的那个链接。要关闭此功能,在settings–discussion(设置—讨论)页面,去掉Attempt to notify any blogs linked to from the article (slows down posting)(尝试提醒任何链接到文章的博客(将延长发表日志的时间))“前边的勾。

转载自http://wenzhu.org/

posted @ 2010-04-18 02:25  leetom  阅读(302)  评论(0编辑  收藏  举报