更新从数据库生成的JSON文件,以便使用javascript

时间:2018-01-17 21:26:14

标签: php json fetch

我正在构建一个纯粹用javascript编写的Web应用程序,但是我将值存储在mySQL数据库中。要访问数据库中的数据,我使用MySQLi等在php中调用它。

我通过执行以下操作生成JSON文件:

$showData = array();
while ($row = mysqli_fetch_assoc($result))
{    
   array_push($showData, $row);           
}

$json_data = json_encode($showData);
file_put_contents('showData.json', $json_data);

这样可以生成JSON,但每次有人访问该页面时都会运行。因此,每当有人点击页面时,它都会重写JSON。这很有效,因为只要有变化,它就会不断更新JSON,并确保showData.json文件始终是最新的。

以下是从JSON文件获取数据的javascript fetch:

fetch("showData.json")
.then(response => response.json())
.then(function(showData){
    getShowData(showData);
});

这再次正常,但它似乎不是最有效的方法,每次有人点击页面时写入文件似乎"错误"。有哪些替代方案?有没有更好的方法来获取JSON数据而无需从JSON文件中读取?

3 个答案:

答案 0 :(得分:2)

不是从JSON文件中读取,而是运行从数据库生成JSON的PHP脚本:

fetch("getData.php")

getData.php与您的第一个脚本完全相同,但不是将JSON写入文件结尾:

echo json_encode($showData);

答案 1 :(得分:-1)

你可以这样做:

$showData = array();
while ($row = mysqli_fetch_assoc($result))
{
array_push($showData, $row);
}
$json_data = json_encode($showData);
?>

<script>
<?php echo $json_data; ?>
</script>

答案 2 :(得分:-1)

最好的办法是保持逻辑,但只需回显JSON并在HTTP服务器级别启用缓存。

缓存控制有很多选项,所以从这里开始:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control

您的HTTP服务器可以缓存来自PHP的响应并直接将其提供给客户端。客户端可以缓存该响应,甚至无需触摸您的服务器。除了添加适当的响应标头之外,您不必修改代码。使用ETag,您还可以在内容更改时使缓存无效。