【问题标题】:Wordpress REST API Slow Response timeWordpress REST API 响应时间慢
【发布时间】:2018-01-07 09:14:45
【问题描述】:

我对 WordPress REST API 的速度有疑问。我正在尝试做的是尽可能快地获取总共大约 26k 条记录的报告数据,以便为用户提供流畅的用户体验。我遇到的问题是,当调用 REST API 时,WordPress 似乎加载了核心、插件和主题。

我已经用尽了优化代码的方法,有没有人知道的一些 WordPress 调整来提高速度?对于使用 REST API 的人来说,这些结果是否正常?如您所见,运行我的代码的时间不是问题,而是 WordPress 开销。

【问题讨论】:

  • 26k 条记录听起来很多。为什么需要这么多?
  • 嗨,Jim,它是报告系统的一部分,用于报告我公司的某个插件的数据。我们不会一次获得所有 26k 记录,并且我们确实内置了分页系统。我使用 26k 记录作为一个点来表明请求所花费的时间主要不是我的代码请求但是 WordPress 的代码。即使我没有抓取任何记录并返回 null,请求时间仍然会非常高,在启用所有插件并将主题设置为 DIVI 的情况下进行快速测试,我得到的响应时间为 1130 毫秒。
  • 据我所知,REST API 通过 Wordpress 重写过程,这就是加载整个主题和插件的原因。在 Ajax 调用中,您可以在包含 wp-load.php 之前定义('SHORTINIT',1),但使用 REST 我从未找到任何类似的选项。
  • 感谢您的帮助,我最终对仅加载部分 WordPress 核心的文件进行了 ajax 调用
  • 您可以尝试的另一件事是禁用 Wordpress WP-Cron:developer.wordpress.org/plugins/cron

标签: php wordpress


【解决方案1】:

概述:所以问题是 WordPress 4.8 版的限制。 WordPress 旨在加载插件和主题以及每个 REST API 请求的所有核心。这是响应时间慢的原因。

解决方案:当前唯一的解决方案是对插件中的文件进行 ajax 调用,并且仅加载 WordPress 核心的一部分。下面的代码是直接文件访问,同时仍然能够使用具有快速响应时间的 WordPress 功能。

//Tell WordPress to only load the basics
define('SHORTINIT',1);

//get path of wp-load.php and load it
require_once $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php';

// register global database
global $wpdb;

// return data selected from DB to user

结果:响应时间降至 100 毫秒。这是 1069 毫秒到 108 毫秒的巨大差异。

参考: https://deliciousbrains.com/wordpress-rest-api-vs-custom-request-handlers/

最后的笔记: Wordpress REST API 非常新,功能非常强大,您应该在大多数响应时间不成问题的情况下使用。

【讨论】:

  • 你会在哪里定义这个?
  • 这将在您构建自定义插件时在您的代码中定义
  • 我不构建自定义插件时怎么样?你知道我应该在哪里添加这段代码来提高 wordpress api 响应时间吗?
  • @ConanCarroll 此代码需要用于创建自定义文件,就其本身而言,除了从 WordPress 加载裸最小值之外,我不会做任何事情。您将在自定义 PHP 文件中使用该代码,然后使用全局 wpdb 对数据库进行所需的任何访问调用,然后转储您需要的任何 json。它会更快,因为它只加载您想要加载的内容,但这是一种非常先进且耗时的方式。
  • 这是绕过 WordPress 使用的 REST 端点。不能注册,直接调用这个文件
【解决方案2】:

如果响应时间对您的应用至关重要,并且您不介意花费时间和精力,我建议您创建自己的入口点来检索您需要的数据。 以下文章说明了此方法的基线: https://medium.com/@yairlevy/wp-rest-api-too-slow-2da859f3cc93

【讨论】:

    【解决方案3】:

    我刚刚找到了这个插件 -> https://wordpress.org/plugins/wp-rest-cache/

    这确实是省时插件,并在我们的现场网站上进行了测试。

    结果:1200ms 平均下降了 50ms。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 2017-09-26
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多