我正在构建一个纯粹用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文件中读取?
答案 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
,您还可以在内容更改时使缓存无效。