把 WP Super Cache 的静态文件移到内存中

WP Super Cache 是一个很好的插件,它可以把 WordPress 静态化。静态化是指,博客变成了一堆 HTML 文件,只要访客不留言,在整个浏览过程中,服务器中是不会有 PHP 程序在运行的,只有 Apache(或者其它 Web 服务器)在响应网页请求。这样就极大地减少了服务器的负载。

但是 WP Super Cache 有一个小小的问题,就是它的缓存(静态文件)是和 WordPress 的程序文件放在一起的,路径是 wp-content/cache/supercache/。这样有两个问题,一是这些临时文件污染了 WordPress 的目录,比如你想备份 WordPress 的程序文件的话,一不小心就把这些没什么用的缓存文件也一起备份了;二是这个缓存目录是放在硬盘上,Apache 依然需要从硬盘上读取它们,对于硬盘速度较慢的 VPS 来说(比如传说中的阿里云),这种静态化机制可能提升不了太多的性能。

于是,我们就来把这些缓存扔进内存中吧。

Linux 提供了一种磁盘类型叫作 tmpfs,它的作用是把一个文件夹伪装成普通的文件夹,但实际内容只放在内存中,以提高文件的访问速度。比较著名 tmpfs 文件夹有 /dev、/run 等。tmpfs 的优点自然是速度快,当然缺点也显而易见,就是机器重启了,tmpfs 就被清空了。不过呢,用它来存放一些临时文件就非常合适了。

我们选择 /run/blog/cache 来替代 wp-content/cache/。以 Ubuntu 为例,下面的命令可以用来创建文件夹,并设置相关权限:

把上述内容存放在 /var/www/create_tmp.sh,因为这段命令不是运行一次就好了,它要在每次重启之后,都运行一遍。要做到这一点,我们需要 Cron Job,做法是运行:

然后在最后添加新的一行:

OK,目录创建完毕,接下去要告诉 WP Super Cache 使用那个目录,做法是在 wp-content/wp-cache-config.php 文件中找到这一行:

把它改成:

然后 WP Super Cache 就会在新的目录下生成静态文件了。

然后还需要改一个地方,如果你使用了“mod_rewrite 缓存模式”,你还需要改动一下 WP Super Cache 的 RewriteRule,大致的改动是这样的,可能需要根据实际情况做不同的修改:

之后,重启一下 Apache,就全部搞定了。


15 条评论 添加

    1. 你有多少篇文章导致有几百 M?是不是从来没有清理过?如果一个 HTML 有 100K,100M 可以包含 1000 篇文章,而我自己的博客,HTML 文件一般不超过 50K。

      即使超过内存大小了,也可以设置 Swap 来扩展,最坏情况下也是在用硬盘读写,但平均情况要好很多。毕竟 VPS 的硬盘读写都要经过虚拟层的,不像自己机器的 SSD 那么快。

发表评论

电子邮件地址不会被公开。 必填项已用*标注