什么是 Memcached?
Memcached 是一个开源分布式内存缓存系统。它通过在 RAM 中缓存数据,以减少对数据库的请求次数,来加速动态数据库网站。
每次用户访问 WordPress 网站,都会向数据库请求数据。如果同时有大量用户访问,那么就会生产大量的数据库查询请求,不但给服务器的负载造成负担,也会减慢网站的响应速度,进而影响用户的访问体验。
对象缓存的目的,就是缓存来自数据库的查询结果,并将其保存在服务器的内存中,如果接下来有相同请求时,便可以直接从内存中读取数据,进而减轻数据库的负载。
Memcached 的工作的过程大概是这样的。用户访问网站发起查询请求,服务器接收到请求后,开始检查 Memcached,以查看所需的数据是否存储在内存中。如果是,则直接返回给用户。如果不是,Memcached 从数据库请求,然后将其缓存在内存中,当再次有用户请求相同数据时,直接将数据返回给用户。
多个 WordPress 网站 Memcached 会出现数据串站问题
如果在同一台服务器上,同时托管了多个 WordPress 网站,当多个网站同时开启 Memcached 时,网站会出现数据串站,或者出现网站白屏,无法登录后台和无法访问等问题。在相同条件下,如果安装的是 Redis,也会出现相同的问题。
定义 WP_CACHE_KEY_SALT 可以避免缓存冲突
如果一台服务器上,托管了多个 WordPress 网站,要在多个网站使用 Memcached,只需在每个网站根目录下的 wp-config.php 文件中,定义 WP_CACHE_KEY_SALT 的唯一值,就可以避免多个站点之间的缓存冲突。
define ('WP_CACHE_KEY_SALT', 'www.yourdomain.com');
在使用时将 www.yourdomain.com 替换为自己的网站域名。添加上述代码后,记得清除网站的缓存。