Чтобы уменьшить размер моего файла 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>
Тем не менее, я не мог получить данные должным образом (он все еще сжимает).
Не могли бы вы дать мне знать, что я делаю не так?
Спасибо
Чтобы использовать 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 для сжатия.
Других решений пока нет …