WordPress 很强大,但是强大之余也有一堆烂摊子要使用者收拾,那就是较高的服务器占用,和速度实在不咋滴。如果你用 WordPress 来做 CMS 站点那么你如果用主机托管那么一定杯具了,用 VPS 内存小了宽带小了也麻烦。其他人都是教了一招,这次我汇集百家所长,十招齐发,十管齐下,勇者无敌!

大家多说时间就是生命,可能几秒钟的等待就会让网站失去一个访客,对于网站的速度你不能等!

1.Cookie 的静态化制作

约有 80%至 90%的时间,访客要花费大量的时间等你的 WordPress 加载静态内容。这意味着,有大部分的时间,用户浏览您的网站,他们正在等待加载,如:图像,CSS,JS 脚本,flash 等等。所以你可以优化内容,更快捷地让 WordPress 加载一个 cookie 域。消除了负载时的一些珍贵的时间,当然了这可能看起来并不多,但添加其他拖延问题时,才能真正减少时间损失。

我不知道其他源码的网站应该怎么做,但是 WordPress 很简单只要修改一下 wp-config.php 就好了!

在合适的位置加入:

define("WP_CONTENT_URL", "http://static.***.com");

define("COOKIE_DOMAIN", "www.***.com");

然后用 「bloginfo(template_directory')」 这段代码加入你要实现的静态内容中即可!

2. 设置静态内容的缓存

静态的内容缓存,我就不多介绍了,你用相关的缓存插件也需要这个步骤,那就是修改.htaccess 文件

代码如下:

<IfModule mod_expires.c>
ExpiresActive on
# Perhaps better to whitelist expires rules? Perhaps.
ExpiresDefault      "access plus 1 month"
# cache.appcache needs re-requests
# in FF 3.6 (thx Remy ~Introducing HTML5)
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Your document html
ExpiresByType text/html "access plus 0 seconds"
# Data
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/json "access plus 0 seconds"
# RSS feed
ExpiresByType application/rss+xml "access plus 1 hour"
# Favicon (cannot be renamed)
ExpiresByType image/x-icon "access plus 1 week"
# Media: images, video, audio
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# HTC files  (css3pie)
ExpiresByType text/x-component "access plus 1 month"
# Webfonts
ExpiresByType font/truetype "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff   "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
# CSS and JavaScript
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
<IfModule mod_headers.c>
Header append Cache-Control "public"
</IfModule>
</IfModule>

 3. 优化数据库

有一个方法来为的服务器减压,怎样才能优化 WordPress 的数据库呢?自然是用代码,用代码,嘿嘿,你可能编辑了几个小时都没有效果!WordPress 的免费插件使得这个问题变得简单,个人推荐 Yoast Optimize DB 和 WP DB Manager 。牢记大多数缓存插件还帮助了很多本,所以你会发现大多数正在采取照顾您已经现存的缓存软件的工作量。

4. 尽量缓存媒体

创建缓存可以很简单地通过插件完成。从本质上讲,这些新增转成静态页面,所有这些方式,既方便加载,又节省您的浏览器前端的滞后。那么,什么插件,听我的建议吧。

我最喜欢的缓存工具:WP Super Cache, Hyper Cache,和 W3 Total Cache 。用这些生成 HTML 文件,可以节省更多的时间。

5. 使用 CDN

CDN 加速目前很火,那么自然火是有一定的道理的,因为 CDN 可以加速呀。呵呵,cdn 一般是收费,不过免费的 CDN 也有。

下面为大家推荐一些实用的免费 CDN:

免费 CDN:Webluker,cloudflare

6. 压缩 JS 和 CSS 文件

你可能只听过说 JS 和 CSS 文件的库转移,总没有听说过压缩吧。呵呵,这个方法是很异想天开,但是就是有人做到了,并且开发了压缩的实用工具,当然机器的压缩并不尽人意,你也可以手工压缩。

JS 压缩工具推荐:Closure Compiler ,Minify JavaScript. CSS 压缩工具推荐:Minify CSS ,CSS Compressor

7. 压缩图像

图像的加载也是比较耗时的,想你如果试用 BMP 或者 PSD 作为图像那么速度一定和蜗牛爬一样,比较高质量保存的 PNG 文件我也不怎么推荐。建议试用 JPG 压缩,但是也不要过度!不然图片会失真。

通过 WP Smush.it 插件你可以比较简单的来压缩图片!

8.GZIP 压缩

GZIP 的压缩在一定限度内是很不错的!而且通过 gzip 压缩不仅能够加速而且还可以屏蔽广告 (免费空间的福音啊)GZIP 的压缩代码交给你!修改.htaccess 文件

<IfModule mod_deflate.c>
# force deflate for mangled headers
# developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)s*,?s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</IfModule>
</IfModule>
# HTML, TXT, CSS, JavaScript, JSON, XML, HTC:
<IfModule filter_module>
FilterDeclare   COMPRESS
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/html
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/css
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/plain
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/xml
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/x-component
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/javascript
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/json
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/xml
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/xhtml+xml
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/rss+xml
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/atom+xml
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/vnd.ms-fontobject
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $image/svg+xml
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/x-font-ttf
FilterProvider  COMPRESS  DEFLATE resp=Content-Type $font/opentype
FilterChain     COMPRESS
FilterProtocol  COMPRESS  DEFLATE change=yes;byteranges=no
</IfModule>
<IfModule !mod_filter.c>
# Legacy versions of Apache
AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml application/atom+xml
AddOutputFilterByType DEFLATE image/svg+xml
application/vnd.ms-fontobject application/x-font-ttf font/opentype
</IfModule>
</IfModule>

 9. 禁用 ETAGS

ETAGS 可能我也搞不懂,但是你仅用了它就可以加速了,所以你管他神马 ETAGS 你说是不?

在.htaccess 文件中+这一行!

File ETag none

 10. 服务器环境

使用 LAMP 环境或者 LNMP 环境,可以更好的支持 WordPress 并且风险系数低,也很安全,估计你的服务器或者 VPS 几年都不会重启一次,所以网上总是我自己的 linux 密码忘记了重启怎么办! 这就是免费惹的祸,真是躺着也中枪啊!

总结:

这些方法中大多数只适合在 LAMP 或者 LNMP 的环境下,所以使用 WordPress 就必须要在 linux 环境下,win 环境下的 WordPress 你会遇到一些列的问题!