D3DN_BLOG

  • 首页
  • About
求知若渴,虚心若愚
没有天生的高手,更没有永远的菜鸟
  1. 首页
  2. 未分类
  3. 正文

PHP中接口返回压缩后的响应(如 GZIP 压缩)的方法

2025年8月15日 92点热度

✅ 方法一:使用 ob_start() 手动压缩输出

<?php
// 开启输出缓冲并启用 GZIP 压缩
ob_start('ob_gzhandler');

// 设置响应头
header('Content-Type: application/json');
header('Content-Encoding: gzip');

// 模拟接口数据
$data = ['status' => 'success', 'message' => 'Hello, compressed world!', 'data' => range(1, 1000)];

// 输出 JSON
echo json_encode($data);

// 刷新缓冲区
ob_end_flush();
?>

✅ 方法二:使用 Apache/Nginx 配置自动压缩(推荐)

如果你使用 Apache 或 Nginx,可以在服务器层启用压缩,无需修改 PHP 代码。

Apache (.htaccess 或 httpd.conf)

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE application/json
</IfModule>

Nginx (nginx.conf)

location ~ \.php$ {
    gzip on;
    gzip_types application/json;
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
}

✅ 方法三:手动压缩 JSON 并设置头(不推荐,除非特殊场景)

<?php
$data = json_encode(['status' => 'success', 'data' => range(1, 1000)]);
$compressed = gzencode($data, 9); // 9 是压缩级别

header('Content-Type: application/json');
header('Content-Encoding: gzip');
header('Content-Length: ' . strlen($compressed));

echo $compressed;
?>

⚠️ 注意事项

  1. 客户端必须支持 gzip:大多数现代浏览器和 HTTP 客户端(如 curl -H "Accept-Encoding: gzip")都支持。
  2. 不要重复压缩:如果服务器已经启用了 gzip,PHP 中就不要再用 ob_gzhandler 或 gzencode(),否则会双重压缩导致错误。
  3. 调试时检查响应头:bash复制curl -I -H "Accept-Encoding: gzip" https://your-api.com/endpoint应看到:Content-Encoding: gzip

✅ 推荐做法

  • 生产环境:优先用 Apache/Nginx 配置压缩,PHP 端无需处理。
  • 临时测试:可以用 ob_start('ob_gzhandler') 快速验证。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2025年8月15日

Moment

角度永远刁钻,关注点极其独特

点赞
< 上一篇

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

Moment

角度永远刁钻,关注点极其独特

最新 热点 随机
最新 热点 随机
PHP中接口返回压缩后的响应(如 GZIP 压缩)的方法 双重 foreach 循环嵌套优化方案 王者人机自动助手 XX抹机下载 微霸改机工具 XP框架
双重 foreach 循环嵌套优化方案PHP中接口返回压缩后的响应(如 GZIP 压缩)的方法王者人机自动助手XX抹机下载
浅谈项目交接中相关细则、顺序 微服务(Microservices)概念 王者人机自动助手 Docker真的很好用,PHP开发者都应该学起来 PHP中接口返回压缩后的响应(如 GZIP 压缩)的方法 模拟器9.0安装面具跟LSP(XP)框架
标签聚合
项目衔接 MYSQL 微服务 架构 PHP Nginx 王者荣耀 抹机工具
分类
  • DB优化
  • 未分类
  • 玩机空间
  • 编程技术
  • 脚本工具

COPYRIGHT © 2018-2025 d3dn.com. ALL RIGHTS RESERVED.转载请注明出处

Theme Kratos Made By Seaton Jiang

赣ICP备16000603号-2

赣公网安备36082902000188