【发布时间】:2019-03-01 17:27:26
【问题描述】:
我必须将 9.7MB 的 JSON 数据从 PHP 服务器传输到 Android 设备。使用gzencode() 压缩数据并在设备上解压缩,然后存储在SQLite 数据库中。整个下载过程大约需要 55 秒或更长时间,具体取决于网络速度。
如何缩短下载时间/优化流程?
我尝试将文本缓存到文件,然后在每次请求时发送它,但速度并没有提高。既不将文件拆分成块。
即使下载速度为 40-50MB/s,也没有任何改进。
<?php
if (isset($_POST['confirmare'])) {
header('Content-Type: application/json');
require "../conexiune.php";
$cat = $_POST['confirmare'];
$sql = "SELECT ID, Text, Răspuns1, Răspuns2, Răspuns3, Imagine, Categorie, ImagineBlob FROM Întrebări Where Categorie = '$cat'";
$result = $conn->query($sql);
ob_start('ob_gzhandler');
class întrebare
{
public $ID;
public $Text;
public $Răspuns1;
public $Răspuns2;
public $Răspuns3;
public $Imagine;
public $Categorie;
public $ImagineGen;
public function __construct($IDp, $Textp, $Răspuns1p, $Răspuns2p, $Răspuns3p, $Imaginep, $Categoriep, $ImagineGenp)
{
$this->ID = $IDp;
$this->Text = $Textp;
$this->Răspuns1 = $Răspuns1p;
$this->Răspuns2 = $Răspuns2p;
$this->Răspuns3 = $Răspuns3p;
$this->Imagine = $Imaginep;
$this->Categorie = $Categoriep;
$this->ImagineGen =base64_encode($ImagineGenp);
}
}
if ($result->num_rows > 0) {
$string = "[";
while ($row = $result->fetch_assoc()) {
$obiect = new întrebare($row["ID"], $row["Text"], $row["Răspuns1"], $row["Răspuns2"], $row["Răspuns3"], $row["Imagine"], $row['Categorie'], $row['ImagineBlob']);
$string .= json_encode($obiect) . ",";
}
$string = rtrim($string, ",");
$string .= "]";
$gzdata = gzencode($string, 9);
echo $gzdata;
} else {
echo "fără rezultate";
}
$conn->close();
}
【问题讨论】: