我的第一篇文章:)
我收到了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',
但没有任何事情发生。
我做错了什么?我应该在什么文件中设置什么?
请指出我正确的方向。
答案 0 :(得分: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)
......等等