Code前端首页关于Code前端联系我们

Memcached 内存缓存可减少 WordPress 站点数据库的负载

terry 2年前 (2023-09-28) 阅读数 58 #未命名

Memcached 是驻留在托管服务器上的缓存机制之一。它主要处理数据库查询,这有助于减少数据库负载,从而实现网页的快速加载。如果您的网站/商店依赖于数据库请求,那么使用 Memcached 可以显着提高 WordPress 网站的性能并减少页面加载时间。 Memcached 内存缓存减少 WordPress 网站数据库负载

什么是内存缓冲区?

根据 Memcached 官方网站,Memcached 是:

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

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

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

Memcached 是用来做什么的?

Memcached 用于通过减少数据库负载来加速动态 Web 应用程序,例如电子商务商店、注册/登录站点等。它存储处理后的结果,以便每当访问者再次请求相同的查询时,Memcached 都可以回答该查询而不是处理查询和响应。保持服务器不那么繁忙,您的访问者将体验到更快的加载时间和更好的用户体验。服务器。 Memcached 通过将数据对象存储在临时动态内存中来减少负载。它将数据存储在键值上,并在将浏览器的请求发送到数据库之前检查内存。如果缓存存在,它会应答请求,而不涉及正在处理的数据库。

如上所述,Memcached 是一个内存中分布式对象缓存系统,由四个主要组件组成:

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

上述组件允许 Memcached 存储和检索数据。每个项目由以下各项组成:

  • 键值
  • 过期时间
  • 原始数据

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

高级Memcached的工作原理如下:

  1. Memcached检查请求的数据是否存储在缓存中。
  2. 两种可能的输出: – 数据存储在缓存中:请求的数据从 Memcached 返回,而不中断数据库。 – 数据不缓存:执行请求的查询,处理和检索数据,并将结果存储在内存中。
  3. 每次更新项目或项目过期时,Memcached 都会更新其缓冲区并确保将新内容交付给发出请求的客户。

如何使用 Memcached?

使用 Memcached 涉及两个步骤。首先,它必须安装在您的主机服务器上,然后您的应用程序必须能够支持 Memcached。

在服务器上安装Memcached

Memcached不需要大量的CPU资源。它完全依赖于记忆。如果您的 Web 服务器具有 8 GB RAM,但操作系统和您的网站仅使用 4 GB,则最好将剩余内存分配给 Memcached 实例以增加存储容量。请在此处阅读所有技术要求。

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

对于 Debian 或 Ubuntu 用户:

命令:apt-get install memcached

对于 Redhat/Fedora:

命令:更多信息请咨询您各自的文档操作系统。值得一提的是,Nginx作为最流行的反向代理服务器之一,预装了Memcached模块,提供了最灵活的Nginx Memcached套餐解决方案。

注:如果您是宝塔用户,可以直接进入软件商店中的PHP设置选项,在【安装扩展】选项卡中进入安装: Memcached 内存缓存减少 WordPress 网站数据库负载

检查Memcached是否正在运行

有有多种方法可以测试 Memcached 是否正在运行。其中一种是使用 Telnet,登录到服务器的 SSH 终端并键入以下命令:

telnet localhost 11211

telnet 127.0.0.1 11211

PS: 如果本地服务器是您的 Memcached 服务器,则会运行上述命令。

如果上述命令成功运行,您将得到以下结果:

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 slices

结果:

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❙quit❀ 并按 Enterenter❀ 。

将 Memcached 集成到您的 WordPress 网站

如前所述,首先确保您的服务器已安装并启用 Memcached 组件,然后再通过插件将其集成到 WordPress 中。这里我们介绍集成Memcached功能开关的W3 Total Cache插件的设置,以及仅用于启用Memcached的Use Memcached插件。只需选择两者之一即可。

W3 Total Cache Plugin

市场上有许多 WordPress 缓存插件。它们中的大多数都支持 Memcached,例如 W3 Total Cache,这是最常用的缓存插件之一,允许您配置 Memcached。如果您是 W3 Total Cache 用户,请导航至 常规设置 选项卡,然后从下拉列表中选择 Memcached,其中显示:

  • 页面缓存
  • Minify Ce 保存全部设置并且不要忘记刷新一次缓存。

    使用 Memcached 插件

    在搜索时,我们遇到了一个相对较新的对象缓存插件,名为 使用 Memcached,因此我们决定对其进行测试。

    如果您在服务器上使用默认值的Memcached服务,即主机127.0.0.1(localhost)和端口11211,您不需要配置任何东西。

    第 1 步:安装使用 Memcached 插件

    只需转到 WordPress 仪表板,然后从左侧边栏转到 插件 > 安装插件 并搜索 Memcached 内存缓存减少 WordPress 网站数据库负载

    插件。单击 安装,,然后单击 激活 Memcached 内存缓存减少 WordPress 网站数据库负载

    第2步:启用memcached

    安装插件后,转到工具>使用memcached,您应该看到启用memcached集成的选项Memcached 内存缓存减少 WordPress 网站数据库负载

    单击启用memcached后,您应该启用对象缓存在您的网站上。 Memcached 内存缓存减少 WordPress 网站数据库负载

    WP-CLI 集成

    这个使用 Memcached 插件最好的事情之一是它与 WP-CLI 集成,我们可以使用 p 来管理插件。

    子命令

    wp memcache flash -> Flush memcache
    wp memcache-statistics -> Memcache-statisticsP_CACHE_Define Wche 如果您要在同一台服务器上托管在多个站点上集成 Membufret ,并确保在 wp-config.php 中定义 WP_CACHE_KEY_SALT。这一步对于避免同一服务器上多个站点之间的缓存冲突非常重要。只需复制并粘贴 wp-config.php 中的代码即可

    define ('WP_CACHE_KEY_SALT', 'yourdomain.com');

    请记住将 yourdomain.com 替换为您自己的网址。添加代码后,请务必清除站点的缓存,以确保一切正常工作。

    总结

    如果配置正确,Memcached 被认为是加速 WordPress 网站的方法之一,因为它可以减少数据库负载并保持服务器不那么繁忙,从而提高性能和页面加载时间。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门