WordPress 网站中启用 Memcached 缓存

网页加载缓慢,您苦恼吗?您需要 Memcached 来加速您的 WordPress 网站。但 Memcached 到底能做什么?让我们在本详细指南中一探究竟。Memcached 是一种强大的缓存机制,驻留在您的托管服务器上,旨在解决数据库查询的繁重负载。它通过减少数据库的压力,大大缩短了页面加载时间并增强了整体用户体验。

YouTube、Reddit、Facebook、Twitter 和 Wikipedia 等互联网巨头都依赖 Memcached 来提高其页面加载时间。甚至 Google App Engine、Microsoft Azure、IBM Bluemix 和 Amazon Web Services 等主要云服务提供商也通过其 API 提供 Memcached 服务。

因此,让我们进一步了解 Memcached 及其对 WordPress 网站的好处。本博客详细介绍了 Memcached 如何优化数据库查询、提高性能并减少页面加载时间以实现无缝的用户体验。

什么是 Memcached?

根据 Memcached 官方网站的介绍,Memcached 是:

“免费、开源、高性能、分布式内存对象缓存系统,本质上是通用的,但旨在通过减轻数据库负载来加速动态 Web 应用程序。

Memcached 是一个内存中的键值存储,用于存储数据库调用、API 调用或页面渲染的结果中的小块任意数据(字符串、对象)。

简单来说,Memcached 是一个分布式临时对象缓存系统,它将处理数据库查询、API 调用或页面渲染产生的字符串和对象存储在服务器的RAM中。用于此机制的服务器可以称为Memcached 服务器

简单理解 Memcached 和对象缓存

页面缓存负责处理图片、HTML、CSS、JS文件等静态资源的缓存;浏览器缓存则优化用户浏览器内的资源存储;而对象缓存则专注于数据库。

对象缓存的主要目的是缓存来自数据库的查询结果。

当用户或爬虫向您的网站发出请求时,它会生成数据库查询。然而,大量的数据库请求会导致查询大量积累,从而导致服务器过载并导致网站性能下降

为了解决这个问题,WordPress早在 2005 年推出了对象缓存类WP_Object_Cache。WP_Object_Cache类作为缓存数据库查询结果的机制,显著提高了网站性能并减少了服务器负载。

通过利用对象缓存,WordPress 网站可以有效优化其数据库性能,从而缩短响应时间并提供更流畅的用户体验

WordPress Redis 与 Memcached

Memcached 和 Redis 都是广泛使用的内存数据库,但具有一些不同的特点。

让我们探讨一下两者的比较:

MemcachedRedis
易于使用易于安装且界面友好易于安装且界面友好
延迟毫秒毫秒
开源是的是的
编程语言兼容流行语言兼容流行语言
引擎多线程单线程
可扩展性垂直可扩展性垂直和水平可扩展性
密钥长度限制250 个字符 (1 MB)支持更大的数据类型(高达 512 MB)
数据持久性是的
故障转移机制支持数据恢复和备份
使用案例非常适合缓存和会话存储适合复杂流程和多任务处理

总而言之,Memcached 和 Redis 都易于安装和使用,延迟低,并且与流行的编程语言兼容。Memcached 适用于缓存和会话存储目的,而 Redis 擅长处理复杂的流程和多任务。

Memcached 是多线程的,适合处理大量数据,而 Redis 是单线程的,非常适合处理少量数据。Redis 提供数据持久性和故障转移机制,而 Memcached 不具备对这些功能的内置支持。

为什么要在 WordPress 网站上使用 Memcached?

假设您有一个流量很大的 WordPress 网站,当访客访问您的网站时,他们发现网站速度很慢,因为服务器难以处理不断增加的负载。每个数据库查询都会增加服务器的负担,从而导致性能瓶颈。

但如果有解决方案呢?幸运的是,有解决方案,那就是 Memcached。

通过在 WordPress 网站上实施 Memcached,您可以将经常访问的数据缓存在 RAM 中,从而减轻服务器的压力。Memcached 通过减少数据库负载来加速电子商务商店、注册/登录网站等动态 Web 应用程序。

通过减少服务器的繁忙程度,您的访问者将体验到更快的加载时间和更好的用户体验。 GitHub 上有一个有趣而有趣的真实故事,您可能想阅读它以了解 Memcached 的典型用例。

WordPress Memcached:优点和缺点

Memcached 作为缓存解决方案具有多项优势,非常适合高流量 Web 应用程序和大型数据库访问。然而,在做出决定之前,重要的是要考虑其优缺点。

优点:

  • 通过内存键值存储实现极快的响应时间。
  • 可扩展架构,用于垂直扩展计算能力。
  • 用户友好且灵活的应用程序开发。
  • 支持开放数据格式并与各种客户端和编程语言兼容。

缺点:

  • 数据是临时存储的,如果 Memcached 实例出现故障,数据可能会丢失。
  • 存储数据的可见性有限可能会使调试变得困难。
  • 值的密钥长度限制为 250 个字符 (1 MB)。
  • 缺乏内置安全功能,需要额外的措施来保护。
  • 没有用于数据备份的冗余或故障转移机制。

评估这些优点和缺点将帮助您确定 Memcached 是否符合您的缓存要求。

Memcached 如何工作?

每当访问者/浏览器请求需要数据库处理和响应的服务器时,都会增加负载。Memcached 通过将数据对象存储在临时动态内存中来减少该负载。

它会保存键值数据,并在将浏览器的请求发送到数据库之前检查其内存。如果缓存存在,它会在不涉及数据库的情况下回复请求。

Memcached是一个分布式内存对象缓存系统,由四大组件组成:

  1. 客户端软件:接收分布式可用 Memcached 服务器列表。
  2. 基于客户端的哈希算法:根据键值选择服务器。
  3. 服务器软件:将数据(值)和键存储到内部哈希表中。
  4. 服务器算法:确定何时删除旧数据并重用内存。

上述组件允许 Memcached 存储和检索数据。每项数据均由以下部分组成:

  • 钥匙
  • 到期时间
  • 原始数据

当请求某个项目时,Memcached 会验证其过期时间,以查看其是否仍然有效,然后再回复请求。如果缓存不存在,它会将请求发送到数据库以处理并将结果存储为项目。如果服务器内存不足,它会查找并替换过期的项目。如果仍然需要信息,Memcached 会查找特定时间段内未请求的项目。通过这种方式,它将*近请求的信息保存在动态内存中。

从高层次来看,Memcached 的工作原理如下:

1. 它检查请求的数据,看它是否存储在缓存中。

2. 两种可能的输出:

-数据保存在缓存中:在不中断数据库的情况下从Memcached返回请求的数据。

-数据不存储在缓存中:执行请求的查询,处理并检索数据,并将结果保存在内存中。

3. 每当某个项目有更新或过期时,Memcached 都会更新其缓存并确保将新内容传递给请求的客户端。

如何在 WordPress 网站上使用 Memcached(2 种方法)

您可以通过三种方式在 WordPress 网站上使用 Memcached:

  • 在托管服务器上手动安装
  • 使用 WordPress Memcached 插件

1. 在服务器上安装 Memcached(手动方法)

想在您的服务器上安装 Memcached,那么您可以尝试手动方法。Memcached 不需要大量的 CPU 资源。它纯粹依赖于 RAM。如果您拥有一个具有8GB RAM 的Web 服务器,但操作系统和您的网站仅消耗4GB,那么您可以将剩余的 RAM 分配给 Memcached 实例以增加其存储容量。

Memcached 适用于大多数基于 Linux 的服务器;安装它只需两个Linux 命令即可。通常,您应该从操作系统(Debian、Ubuntu 等)提供的软件包安装 Memcached。操作系统将为您解决依赖关系并处理安全更新。

  • 对于 Debian 或 Ubuntu 用户:

命令:apt-get install memcached 

  • 对于 Redhat/Fedora:

命令:yum install memcached 

注意:值得一提的是,流行的反向代理服务器之一Nginx预先打包了 Memcached 模块,提供了灵活的 Nginx Memcached 捆绑解决方案。

2. 在 WordPress 上安装 Memcached(使用插件)

WordPress 存储库拥有一些较好的插件,可用于扩展网站的功能。它还提供许多缓存插件,其中大多数都支持 Memcached,例如 W3TC。如果您使用 W3TC,您可以导航到“常规设置”选项卡,然后从下拉列表中选择Memcached,其中显示:

  • 页面缓存
  • *小化缓存
  • 数据库缓存
  • 保存所有设置,并且不要忘记清除缓存*。

如何检查 WordPress Memcached 是否已启用

有多种方法可以测试 Memcached 是否正在运行。其中之一是使用Telnet

  • 要检查,请登录到您的服务器SSH 终端并输入以下命令:
telnet localhost 11211

或者

telnet 127.0.0.1 11211

PS:仅当本地服务器是您的Memcached服务器时,上述命令才会运行。

  • 如果上述命令成功运行,您将得到以下结果:
  1. 已连接到本地主机。
  2. 转义字符是’^]’ 。
Connected to localhost.
Escape character is '^]'.

否则,您将收到连接错误

要检查一些基本统计数据,可以使用以下命令:stats

您将看到以下输出:

STAT pid 313
STAT uptime 2778636
STAT time 1535727399
STAT version 1.4.21
STAT libevent 2.0.21-stable
STAT pointer_size 64
STAT rusage_user 47.119322
STAT rusage_system 48.765342
STAT curr_connections 1
STAT total_connections 151198
STAT connection_structures 3
STAT reserved_fds 20
STAT cmd_get 46
STAT cmd_set 4
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 30
STAT get_misses 16
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 22942
STAT bytes_written 3433252
STAT limit_maxbytes 268435456
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT malloc_fails 0
STAT bytes 106
STAT curr_items 1
STAT total_items 4
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 0
STAT crawler_reclaimed 0
STAT lrutail_reflocked 0

要检查项目,请使用:stats items

结果:

STAT items:2:number 1
STAT items:2:age 2486
STAT items:2:evicted 0
STAT items:2:evicted_nonzero 0
STAT items:2:evicted_time 0
STAT items:2:outofmemory 0
STAT items:2:tailrepairs 0
STAT items:2:reclaimed 0
STAT items:2:expired_unfetched 0
STAT items:2:evicted_unfetched 0
STAT items:2:crawler_reclaimed 0
STAT items:2:lrutail_reflocked 0

要检查当前内存统计信息,请输入:stats slabs

结果:

STAT 2:chunk_size 120
STAT 2:chunks_per_page 8738
STAT 2:total_pages 1
STAT 2:total_chunks 8738
STAT 2:used_chunks 1
STAT 2:free_chunks 8737
STAT 2:free_chunks_end 0
STAT 2:mem_requested 106
STAT 2:get_hits 30
STAT 2:cmd_set 4
STAT 2:delete_hits 0
STAT 2:incr_hits 0
STAT 2:decr_hits 0
STAT 2:cas_hits 0
STAT 2:cas_badval 0
STAT 2:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048560

要退出连接,请输入quit并按Enter

总结

如果配置得当,Memcached 被认为是加速 WordPress 网站的较佳方法之一,因为它可以减少数据库负载并降低服务器繁忙程度,从而提高性能并缩短页面加载时间。无需手动在服务器上安装 Memcached 或依赖 W3TC 等缓存插件,选择我们 托管主机是理想之选。我们服务器 Memcached已预安装激活在其平台上启动的所有服务器上,提供无忧体验。

滚动至顶部
扫描微信二维码联系我们 关闭