You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postman请求WordPress PHP插件端点遇缓存异常问题咨询

问题原因及解决办法

核心原因:缓存机制在搞鬼

不管是WordPress本身还是Postman,对GET请求都有默认的缓存策略,这就是你修改代码后相同请求返回旧结果的根本原因。

1. WordPress端的缓存

WordPress REST API默认会对GET请求进行缓存,尤其是当你的端点没有明确禁用缓存时。另外如果你的服务器开启了页面缓存(比如WP Rocket、W3 Total Cache这类插件,或者服务器自带的Nginx/Apache缓存),也会直接返回缓存的响应。

解决办法:

  • 在你的端点注册代码里,添加禁用缓存的头信息,强制服务器返回新响应:
    register_rest_route( 'your-namespace/v1', '/your-endpoint', array(
      'methods' => 'GET',
      'callback' => 'your_endpoint_callback',
      'permission_callback' => '__return_true',
    ) );
    
    function your_endpoint_callback( $request ) {
      // 添加缓存禁用头
      header( 'Cache-Control: no-cache, no-store, must-revalidate' );
      header( 'Pragma: no-cache' );
      header( 'Expires: 0' );
      
      return array( 'random' => rand( 1, 1000 ) );
    }
    
  • 如果你用了缓存插件,临时禁用它,或者开启插件的「开发模式/禁用缓存」选项。
  • 手动清除WordPress的Transient缓存,或者直接用插件的「清除缓存」功能。

2. Postman端的缓存

Postman默认会缓存GET请求的响应,相同URL和参数会直接从本地缓存读取,不会真正发送新请求到服务器。

解决办法:

  • 打开请求的「Settings」标签,找到「Cache」选项,勾选「Disable caching」,永久关闭该请求的缓存。
  • 每次测试前,点击「Send」按钮旁的下拉箭头,选择「Send and Disable Cache」,强制发送新请求。
  • 或者在请求头里添加Cache-Control: no-cache,告诉Postman不要缓存当前请求的响应。

3. 开发便捷小技巧

测试时给请求加一个随机无意义参数,比如?t=12345(每次修改代码后换个数字),这样URL发生变化,不管是Postman还是服务器都不会调用旧缓存,不用修改业务参数就能测试新代码。

内容的提问来源于stack exchange,提问作者ustk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 18:42:44