我正在构建一个纯粹用javascript编写的web应用程序,但是我将值存储在mySQL数据库中。为了访问数据库中的数据,我在php中使用MySQLi等调用它。
通过执行以下操作,我可以生成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 fine,但是每次有人访问页面时都会运行它。因此,每当有人点击页面时,它都会重写JSON。这非常有效,因为每当有变化时,它都会不断更新JSON,并确保showData.json文件始终是最新的。
下面是从JSON文件中获取数据的javascript抓取:
fetch("showData.json")
.then(response => response.json())
.then(function(showData){
getShowData(showData);
});再说一次,这很好用,但是这似乎不是最有效的方式,每次有人点击页面时写入文件似乎是“错误的”。有什么替代方案吗?有没有更好的方法来获取JSON数据而无需读取JSON文件?
发布于 2018-01-18 05:30:26
运行从数据库生成JSON的PHP脚本,而不是读取JSON文件:
fetch("getData.php")getData.php将与您的第一个脚本完全相同,但不是将JSON写入文件,而是以:
echo json_encode($showData);发布于 2018-01-18 05:37:12
您可以这样做:
$showData = array();
while ($row = mysqli_fetch_assoc($result))
{
array_push($showData, $row);
}
$json_data = json_encode($showData);
?>
<script>
<?php echo $json_data; ?>
</script>发布于 2018-01-18 06:28:06
最好的做法是保留您的逻辑,但只需回显JSON并在HTTP服务器级别启用缓存。
缓存控制有很多选项,所以从这里开始:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
您的HTTP服务器可以缓存来自PHP的响应,并将其直接提供给客户端。客户端可以缓存该响应,甚至不必接触您的服务器。除了添加适当的响应头之外,您不需要修改代码。使用ETag,您还可以在内容更改时使缓存无效。
https://stackoverflow.com/questions/48310248
复制相似问题