首页 > 解决方案 > 在 php 中编码数据并在 Javascript (ajax) 中解压缩

问题描述

为了减小我的 json 文件的大小,我想压缩它。因此,我正在尝试压缩从 php 服务器发送的 json 数据文件:

header('Content-Encoding: gzip'); 
$output = gzencode(json_encode($data));     
echo $output;

然后,在 javascript (ajax 方法) 中解压缩它:

$.ajax({
    url: url,
    type: "GET",
    headers : {'Accept-Encoding': 'gzip '},
    async: true,
    success: function (data) {
        console.log("sucess !!");
        console.log(data);
        ... 
    )};

我还修改了 apache 服务器以自动解压缩它:

LoadModule deflate_module modules/mod_deflate.so

和 :

 <IfModule mod_headers.c>
  <FilesMatch ".(js|css|xml|gz|txt|json)$">
      Header append Vary: Accept-Encoding
  </FilesMatch>

但是,我无法正确获取数据(它仍然压缩)。

你能告诉我我做错了什么吗?

谢谢

标签: javascriptphpapachecompression

解决方案


要为 API 使用 gzip,无需在应用程序级别实现它(在 PHP 中压缩数据并在 JS 中解压缩)。在这种情况下,数据应由 Web 服务器 (Apache) 压缩并由客户端(浏览器)解压缩。这个过程是透明的,独立于 PHP 或 JS 代码。

确保将 Web 服务器配置为对您的 API 端点使用压缩。要测试它curl -I -H 'Accept-Encoding: gzip,deflate' https://your.domain/api/endpoint/name,请在浏览器 devtools 中运行或检查请求(在 Network 选项卡下)。

如果content-encoding: gzip响应中有标头,则表示服务器使用 gzip 进行压缩。


推荐阅读