0

我在这里的第一篇文章:)

我得到了 json 文件“my_data.json”。大约 3 MB。我加载这个:

$(document).ready(function() {
$.ajax({
    'url' : 'my_data.json',
    dataType: 'json',
    success: function(json){

一切正常,脚本从文件中获取数据,我可以从中构建一个列表。

因为我想使用压缩文件的大小,但是我的托管服务提供商禁用了 mod_gzip 和 mod_deflate。所以我使用 PHP gzencode 压缩了文件,现在文件只有 250kB。新文件是“my_data.json.gz”。

当我在以前的代码中将“my_data.json”替换为“my_data.json.gz”时,什么也没有发生。我了解我应该通知浏览器有关数据已压缩的信息。我阅读了标题并尝试添加:

beforeSend: function (xhr){ 
        xhr.setRequestHeader("Content-Encoding","gzip");
    }, 

或者

headers: {"Content-Encoding": "gzip"},

行后

dataType: 'json',

但什么也没发生。

我做错了什么?我应该在什么文件中设置什么?

请指出我正确的方向。

4

1 回答 1

1

我从我的托管服务提供商那里得到了答案,它运行良好。对于任何需要这个的人:.htaccess 文件应该是这样的:

AddEncoding gzip gz
<FilesMatch "\.gz$">
ForceType text/plain
Header set Content-Encoding: gzip
</FilesMatch>

就这样。

但是,如果您想使用 PHP 发送文件而不是更改 .htaccess,请创建新文件 'senddata.php' 并将其放入:

<?php $file = 'testowe-dane.json.gz';
if (file_exists($file))
{ header( "Content-Encoding: gzip" );
ob_clean();
flush();
readfile($file);
exit; }
?>

然后从这个 php 文件中加载数据: $.ajax({ 'url' : 'senddata.php', dataType: 'json', success: function(json) ...等等

于 2013-10-12T07:57:37.817 回答