首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新从数据库生成的JSON文件以使用javascript进行操作

更新从数据库生成的JSON文件以使用javascript进行操作
EN

Stack Overflow用户
提问于 2018-01-18 05:26:14
回答 3查看 72关注 0票数 2

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

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

代码语言:javascript
复制
$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抓取:

代码语言:javascript
复制
fetch("showData.json")
.then(response => response.json())
.then(function(showData){
    getShowData(showData);
});

再说一次,这很好用,但是这似乎不是最有效的方式,每次有人点击页面时写入文件似乎是“错误的”。有什么替代方案吗?有没有更好的方法来获取JSON数据而无需读取JSON文件?

EN

回答 3

Stack Overflow用户

发布于 2018-01-18 05:30:26

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

代码语言:javascript
复制
fetch("getData.php")

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

代码语言:javascript
复制
echo json_encode($showData);
票数 2
EN

Stack Overflow用户

发布于 2018-01-18 05:37:12

您可以这样做:

代码语言:javascript
复制
$showData = array();
while ($row = mysqli_fetch_assoc($result))
{
array_push($showData, $row);
}
$json_data = json_encode($showData);
?>

<script>
<?php echo $json_data; ?>
</script>
票数 -1
EN

Stack Overflow用户

发布于 2018-01-18 06:28:06

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

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

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48310248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档