正常情况下对于每分钟几个页面的点击,WordPress的性能满足是毫无问题的。但是假如某一天,你的博客文章被某知名网站转载或者被某人气王所分享,或者是出现在了某些社交论坛。这将会给你的博客带来巨大的流量,这种情况下对于服务器处理的处理能力就是一大考验。下面必盛互联就介绍几种为你的WordPress服务器缓解压力的方法。
- IIS Output Caching
- WP Cache插件
- WP Super Cache 插件
接下来,必盛互联就为你一一讲述三种方法的优缺点以及如何配置IIS、如何在WordPress中使用这些选项等。
基本配置
在进行配置之前,首先要满足以下的先决条件。
1.安装WordPress。如何安装这里必盛互联就不再赘述了,必盛互联的WordPress主机提供了对于WordPress的一键安装,方便快捷。
2.安装微软URL Rewrite2。启动IIS中的URL Rewrite。这一步非常重要,因为wordpress中的Permalink功能主要用到URL Rewrite。
3.启用“Pretty Permalinks”
IIS Output Caching
IIS7.0具有非常强大的IIS Output Caching框架,可以在内核模式(http.sys)和用户模式内存区域(IIS工作进程)缓存响应信息。IIS Output Caching可以用于静态Web资源和半动态web应用程序。内容自动生成,而不是随着请求而改变。博客引擎就是一个半自动web应用的例子。
使用IIS Manager UI启用IIS Output Caching
或者添加以下的配置文件到web.config文件里。
<caching>
<profiles>
<add extension=”*” policy=”CacheForTimePeriod” kernelCachePolicy=”CacheForTimePeriod” duration=”00:00:30″ />
</profiles>
</caching>
配置好之后,IIS将会在30秒内,缓存这些生成在内存中的响应。从而避免繁重的脚本处理和数据库I/O的所有后续请求。这将显著增加wp的吞吐量。例如,在我的虚拟机上启用IIS Output Caching之后WP的吞吐量由每秒10个请求增长到了每秒2500个请求。
当然使用IIS Output Caching也存在一定的缺陷。使用缓存页面代替WP自定生成页面时,会导致某些动态博客功能丢失。例如,当访问者提交博客评论时不会有任何确认信息提示评论提交成功。这就是因为用户提交评论后显示的页面时从缓存中来的。可能就会导致读者反复的提交评论。这个问题可以通过减少缓存的timeout时间,在一定程度来缓解。
另一种防止此类情况发生的解决方案就是使用WP Super Cache 插件。
WP Cache和WP Super Cache
WP Super Cache插件是一款非常流行的插件,从动态的WordPress博客生成一个临时静态的HTML页面,生成HTML文件后,服务器将直接处理文件而不是相对花费代价更高的WordPress脚本。由于WP Super Cache属于WordPress定制的解决方案,因此它可以灵活的处理各种情况如:提交评论或者是为用户提供网页登陆。特别的,该插件对于以下用户提供静态HTML页面:
没有登陆的用户
没有留言的用户
90%的用户一般都不会做任何的动作,为他们提供静态的HTML页面可以显著的提高服务器的吞吐量。
WP Super Cache插件有两种操作模式:WP-Cache和WP-SuperCache。使用WP-Cache,静态文件仍然需要生成,但是每一个请求都需要登录PHP engine。WP-SuperCache则是依靠URL Rewrite来完全绕开PHP。
IIS7.0中配置WP-Super Cache的步骤
第一步:确认WP-content文件夹可写。
第二步:下载WP-Super Cache插件,解压到WordPress Plugins 文件夹“wp-contentplugins”这里就会生成一个“wp-contentpluginswp-super-cache”文件夹。
第三步:复制文件“wp-contentpluginswp-super-cachewp-cache-config-sample.php” 到“wp-contentwp-cache-config.php” ,确保 WPCACHEHOME 指向正确的位置。
第四步:复制文件“wp-contentpluginswp-super-cachewp-cache-phase1.php”文件到“wp-contentadvanced-cache.php”
第五步:添加下列Rewrite 规则到web.config。确保“WP Super Cache” 规则在pretty permalinks规则之前。
<rewrite>
<rules>
<rule name=”WP Super Cache” stopProcessing=”true”>
<match url=”^(d{4})/(d{2})/(.+?)/?$” ignoreCase=”false” />
<conditions>
<add input=”{REQUEST_METHOD}” negate=”true” pattern=”POST” ignoreCase=”false” />
<add input=”{QUERY_STRING}” negate=”true” pattern=”.*=.*” ignoreCase=”false” />
<add input=”{QUERY_STRING}” negate=”true” pattern=”.*attachment_id=.*” ignoreCase=”false” />
<add input=”{HTTP_COOKIE}” negate=”true” pattern=”^.*(comment_author_|wordpress|wp-postpass_).*$” ignoreCase=”false” />
<add
input=”{DOCUMENT_ROOT}wp-contentcachesupercache{HTTP_HOST}{R:1}{R:2}{R:3}index.html” matchType=”IsFile” />
</conditions>
<action type=”Rewrite” url=”wp-content/cache/supercache/{HTTP_HOST}/{R:1}/{R:2}/{R:3}/index.html” />
</rule>
<rule name=”Wordpress Pretty Permalinks” patternSyntax=”Wildcard”>
<match url=”*” />
<conditions>
<add input=”{REQUEST_FILENAME}” matchType=”IsFile” negate=”true” />
<add input=”{REQUEST_FILENAME}” matchType=”IsDirectory” negate=”true” />
</conditions>
<action type=”Rewrite” url=”index.php” />
</rule>
</rules>
</rewrite>
第六步:添加下列代码到wp-config.php文件,添加到:“require_once(ABSPATH.’wp-settings.php’);” 之上
define( “WP_CACHE”, true );
第七步:登录WordPress网站后台,激活插件。点击“WP Super Cache”。如果配置正确的话,你将看到如下的插件配置页面。
第八步:找到“wp-contentcache”文件,该文件在插件激活的时候会自动创建。在这里建立一个新的web.config文件,将下列的内容复制进文件中。
<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name=”Cache-Control” value=”max-age=300, must-revalidate” />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
上面的IIS配置将会发送Cache-Control response header到每一个缓存HTML页面。这些Header将会强制浏览器在5s后终止本地Cache响应。你可以通过将WP Super Cache插件的状态设置为“ON”来检查其运行情况。
总结:
优点 | 缺点 | |
IIS Output Caching |
容易配置 显著提高网站吞吐量 |
可能会阻止提交评论的确认信息 |
WP-Cache |
不使用URL rewrite 能够正确处理评论提交和其它访客操作 |
和另外两种方式相比性能提升不显著 |
WP-Super Cache |
显著提高网站吞吐量 能够正确处理评论提交和其它访客操作 |
配置更加复杂 |
更多知识,请访问必盛互联官方博客。