Кодировать данные в php и распаковывать в Javascript (ajax) - PullRequest
0 голосов
/ 11 февраля 2019

Чтобы уменьшить размер моего файла json, я хотел сжать его.Поэтому я пытаюсь сжать файл данных json, отправленный с php-сервера:

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

, а затем распаковать его в javascript (ajax methodd):

$.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>

Однако я не смог получить данные должным образом (они все еще сжимают).

Не могли бы вы сообщить мне, что я делаю неправильно?

Спасибо

1 Ответ

0 голосов
/ 11 февраля 2019

Чтобы использовать gzip для API, нет необходимости реализовывать его на уровне приложения (сжимать данные в PHP и распаковывать в JS).В этом случае данные должны быть сжаты веб-сервером (Apache) и распакованы клиентом (браузером).Этот процесс прозрачен и не зависит от кода PHP или JS.

Убедитесь, что веб-сервер настроен на использование сжатия с вашими конечными точками API.Чтобы проверить его, запустите curl -I -H 'Accept-Encoding: gzip,deflate' https://your.domain/api/endpoint/name или просмотрите запрос в вашем браузере devtools (на вкладке Сеть).

Если в ответе есть заголовок content-encoding: gzip, это означает, что сервер использует gzip для сжатия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...