如何不保存使用fetch方法检索的数据?Javascript
我正在尝试尽可能多地从服务器获取数据。如何不保存使用fetch方法检索的数据?Javascript,javascript,fetch,Javascript,Fetch,我正在尝试尽可能多地从服务器获取数据。 为此,我在AnimationFrame中使用fetch方法。 然而,这项工作在最初的30秒表现得相当好,然后开始滞后。当我查看时,我可以看到在每次执行fetch时,浏览器收到的数据都保存在Fetches文件夹中。。。产生数千个文件。 如何删除Fetches文件夹中存储的数据? 以下是主要代码: function fetch_from_server() { if (has_new_value) { let infos = new F
为此,我在AnimationFrame中使用fetch方法。
然而,这项工作在最初的30秒表现得相当好,然后开始滞后。当我查看时,我可以看到在每次执行fetch时,浏览器收到的数据都保存在Fetches文件夹中。。。产生数千个文件。 如何删除Fetches文件夹中存储的数据?
以下是主要代码:
function fetch_from_server() {
if (has_new_value) {
let infos = new FormData();
infos.append('x', player.x);
infos.append('y', player.y);
infos.append('csrfmiddlewaretoken', csrf.getAttribute('value'));
return fetch(url_info, {
method: 'POST',
body: infos,
credentials: 'same-origin',
})
.then(response => response.json())
.then(json => {
update_p(json);
})
.then(_ => {
has_new_value = false;
is_fetching = false;})
.catch(error => console.log('Error:', error));
}
else {
return fetch(url_info)
.then(response => response.json())
.then(json => {
update_p(json);
})
.then(is_fetching = false)
.catch(error => console.log('Error:', error));
};
};
// Update Loop
function update(timestamp) {
if (!is_fetching) {
delay = (timestamp - last_update_time); // milliseconds
is_fetching = true
my_fetch = fetch_from_server();
}
rAF = window.requestAnimationFrame(update);
};
我用一个点击事件监听器请求了第一个AnimationFrame。
这只是一个简单的项目,用于在迷你游戏的浏览器之间交换数据。我只是想玩javascript,但我被困在这里,我找不到问题的答案
谢谢大家!
阿德卡茨
PS:即使我经常使用StackOverflow,这是我的第一篇帖子,如果我不遵守某些标准,我深表歉意。你应该永远不要为特定的浏览器实现进行优化,因为它们可以随时更改,并且在不同的平台上有所不同;相反,在您自己的代码中寻找低效之处 我认为真正的问题是你试图以一种不理想的方式解决这个问题。如果可以的话,试着在这个游戏中将抓取速度限制在尽可能慢的范围内(最多每秒一到两次)。此外,请尝试删除尽可能多的缓存机制和标头以提高性能。如果你已经做了所有这些,但仍然很慢,不幸的是,你可能需要重新考虑你的设计 您需要的是客户端和服务器之间的一个稳定、高效的数据流。HTTP请求在每个请求中都嵌入了头文件、安全检查和其他低效功能,这可能导致严重的速度减慢,甚至在一个失败的请求中也会导致错误的用户体验 这就是为什么您应该使用一个更有效的标准来处理小块的常量数据,比如。您不仅可以从客户端发出高效的请求,服务器还可以直接向客户端发送数据!例如,如果您有一个基于回合的游戏,如果一个玩家移动,该玩家的浏览器可以向服务器发送请求,通知其回合发生,然后服务器可以直接向所有其他玩家发送数据,通知其他客户端该移动
不幸的是,使用WebSocket需要对应用程序进行全面的重新设计,这就是为什么我建议您尽一切努力使当前的抓取解决方案能够工作的原因。但是,如果您确实想使用它们,您可以直接使用浏览器和一些服务器端库(对于Node.js,类似的)来实现它,或者使用一个新手友好的服务器客户端解决方案,例如(虽然性能较低,但可能会更容易使用).您应该永远不要针对特定的浏览器实现进行优化,因为它们可以随时更改,并且在不同的平台上有所不同;相反,在您自己的代码中寻找低效之处 我认为真正的问题是你试图以一种不理想的方式解决这个问题。如果可以的话,试着在这个游戏中将抓取速度限制在尽可能慢的范围内(最多每秒一到两次)。此外,请尝试删除尽可能多的缓存机制和标头以提高性能。如果你已经做了所有这些,但仍然很慢,不幸的是,你可能需要重新考虑你的设计 您需要的是客户端和服务器之间的一个稳定、高效的数据流。HTTP请求在每个请求中都嵌入了头文件、安全检查和其他低效功能,这可能导致严重的速度减慢,甚至在一个失败的请求中也会导致错误的用户体验 这就是为什么您应该使用一个更有效的标准来处理小块的常量数据,比如。您不仅可以从客户端发出高效的请求,服务器还可以直接向客户端发送数据!例如,如果您有一个基于回合的游戏,如果一个玩家移动,该玩家的浏览器可以向服务器发送请求,通知其回合发生,然后服务器可以直接向所有其他玩家发送数据,通知其他客户端该移动
不幸的是,使用WebSocket需要对应用程序进行全面的重新设计,这就是为什么我建议您尽一切努力使当前的抓取解决方案能够工作的原因。但是,如果您确实想使用它们,您可以直接使用浏览器和一些服务器端库(对于Node.js,类似的)来实现它,或者使用一个新手友好的服务器客户端解决方案,例如(虽然性能较低,但可能会更容易使用)。这个答案对您有帮助吗这个答案对你有帮助吗