最近群里的小伙伴又在抱怨安装的 WordPress cms 主题加载太慢了,其实呢 cms 主题嘛,首页的文章展示模块太多了,所以产生的 sql 查询也就多了,自然而然的加载速度也就很慢咯尤其是数据展示量比较的 cms 主题,那加载速度可不敢恭维了。那么如何加快解构比较复杂的 WordPress cms 主题的加载速度呢?小编这里给出两个方案。

方案一:在服务器上安装 eaccelerator 或 memcached 这类的数据库缓存脚本,并且安装相关的 WordPress 插件。 (PS:这个方案适合 vps 或者独立服务器的用户,如果小伙伴用的是虚拟主机那就别奢望这个方法了。)

方案二:为 WordPress 首页生成一个 html 文件跳过 sql 查询。 (这个方法最有效,效果也很好,而且对小伙伴的空间配置要求不高,虚拟主机即可使用。)

实现方法:

1 、新建一个名为 index_html.php 的文件并加入一下代码:

<?php
$baseCmsUrl = "http://www.weixiaoduo.com";   //你网站的根目录不要加反斜杠/
$dmPageName = "index.php";
$stPageName = "index.html";
$tureStFile = dirname(__FILE__).'/'.$stPageName;
{
        $body = file_get_contents($baseCmsUrl.'/'.$dmPageName);
        $fp = fopen($tureStFile, 'w');
        fwrite($fp, $body);
        fclose($fp);
}
header("Location:$baseCmsUrl/index.html");    //生成后返回静态首页
?>

将文件上传到网站根目录后直接打开浏览器访问该文件即可为 WordPress 首页生成 html 。

生成 index.html 文件后,我们要注意的是我们直接访问自己的域名和访问域名+index.html 都会显示首页这样的会搜索引擎会认为你在制造重复页面,会给网站带来一定的负面影响,下面小编给出解决此问题的方法 (访问 index.html301 转跳到/,即去除掉首页 url 中的 index.html):

apache 下的解决方法:

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.(php|html|htm) HTTP/
RewriteRule ^index.(php|html|htm)$ https://www.weixiaoduo.com/ [R=301,L]

nginx 下的解决方法

location / {
     if (!-e $request_filename){
          rewrite ^/(.*)$ /index.html/$1 last;
     }
}

apache 下只要将代码加到.htaccess 文件最上面即可,域名替换成你自己的域名,至于 nginx,小编就不多说了,既然你都用上了 nginx 那么这点问题应该还是懂的。

2014 年 1 月 15 日更新

解决 index_html.php 文件只能执行一次的问题。 (PS:群里有位小伙伴使用了小编的静态化首页的方法加速首页,但是发现 index_html.php 文件只能生成一次 index.html 文件,第二次执行后 index.html 文件无变化,只有登录 FTP 删除了之后再次生成才有用。) 使用改良后的代码即可解决此问题,代码如下:

<?php
if(file_exists("index.html"))
 {
unlink("index.html");
 }
$baseCmsUrl = "http://www.weixiaoduo.com";
$dmPageName = "index.php";
$stPageName = "index.html";
$tureStFile = dirname(__FILE__).'/'.$stPageName;
{
        $body = file_get_contents($baseCmsUrl.'/'.$dmPageName);
        $fp = fopen($tureStFile, 'w');
        fwrite($fp, $body);
        fclose($fp);
}
header("Location:$baseCmsUrl/index.html");
?>