Кодировать данные в php и распаковывать в Javascript (ajax)

Чтобы уменьшить размер моего файла 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>

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

Не могли бы вы дать мне знать, что я делаю не так?

Спасибо

0

Решение

Чтобы использовать 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 для сжатия.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector