gpt4 book ai didi

javascript - 使用 AJAX 检查更新 - 带宽优化的可能性?

转载 作者:行者123 更新时间:2023-11-30 09:06:34 25 4
gpt4 key购买 nike

我正在创建一个简单的在线多人游戏,两个玩家(客户端)可以一起玩这个游戏。数据被发送到服务器并从服务器获取,服务器管理与此相关的所有数据。

我面临的问题是如何有效地从服务器获取更新。使用 AJAX 获取数据:每 5 秒,从服务器获取数据以检查更新。然而,这是使用 HTTP 完成的,这意味着每次都会发送所有 header 。数据本身保持在绝对最低限度。

我想知道是否有人可以提供有关如何在此服务器/客户端方案中节省带宽的提示。是否可以使用自定义协议(protocol)或类似协议(protocol)来获取数据,以防止所有 header (如“服务器:Apache”)被每次发送?我基本上只需要非常数据(只有 9 个字节)而不是所有 header (如果不多的话,就像 100 个字节一样)。

谢谢。

最佳答案

Comet 或 Websockets

HTML5 的 websockets (如此处其他答案中所述)目前浏览器支持可能有限,但使用长期 HTTP 连接推送数据(又名 Comet )以 even IE6 的方式为您提供类似的“流”功能。可以应付。 Comet 实现起来相当棘手,因为它是一种利用当时浏览器恰好实现的方式的 hack。

另请注意,这两种技术都需要您的服务器处理比以往更多的并发连接,即使它们大部分时间处于空闲状态,这也可能是一个问题。这有时称为 C10K problem .

本文对websockets vs comet有一些讨论.

减少 header 大小

您可能会成功地将 HTTP header 减少到节省字节所需的最低限度。但是您需要保留 Date,因为根据规范 (RFC 2616) 这不是可选的。您可能还需要 Content-Length 来告诉浏览器正文的大小,但也许可以在发送正文字节后删除它并关闭连接,但这会阻止浏览器利用HTTP/1.1 持久连接。

请注意,Server header 不是必需的,但 Apache 不允许您将其完全删除 - ServerTokens指令对此进行控制,并且最短的设置会导致 Server: Apache 正如您已经拥有的那样。我认为其他网络服务器通常也不会让您删除 Server header ,但如果您在共享主机上,您可能会被提供商配置的 Apache 卡住。

关于javascript - 使用 AJAX 检查更新 - 带宽优化的可能性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4651503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com