【问题标题】:What exactly does a "persistent connection" mean?“持久连接”到底是什么意思?
【发布时间】:2010-12-01 14:34:46
【问题描述】:

我读到“HTTP persistent connection”,但不知何故,我似乎不明白在这种情况下持久化意味着什么。
能详细点吗?

【问题讨论】:

  • Chaos 的意思是客户端和服务器之间的连接在信息交换后并没有关闭——让它保持打开状态以供进一步通信。这比每次需要传输信息时都建立新连接要快得多。

标签: http connection persistent


【解决方案1】:

这意味着服务器在完成推送响应后不会关闭套接字(因此必须通过标头或分块来指示响应的长度),因此客户端可以在同一个套接字上发出其他请求.一个网页经常在与页面本身相同的服务器上请求其他几个部分(图像、CSS、脚本......),因此与关闭页面相比,将套接字重用于对同一服务器的一些进一步请求可以减少整体延迟原始套接字并为所有后续请求打开新套接字。

【讨论】:

  • 正如 darkassassin93 所说,在 Servlet 上的 out.close() 的情况下连接将断开。在这种情况下,我们如何在 Java Tomcat 服务器上实现 HTTP 持久连接?还是我们必须使用 3rd 方工具来实现这一点?另一个问题是客户端呢?
  • @Kevin,您无法控制浏览器(“客户端”):它将建立自己的策略(您可以只希望它支持“保持活力”;大多数人都这样做)。重新调用.close,我确实相信关闭连接(这是它的特定目的)所以(希望浏览器合作)不关闭连接的方法不是调用close - 可能还不够,但肯定是必要的。
【解决方案2】:

到目前为止,所有讨论都来自浏览器方面。浏览器首先请求实际页面,然后解析页面并找出它需要的所有其他资源,然后才能呈现该页面。浏览器一一请求这些资源和其他依赖资源。因此,在这里维护持久连接非常有效,因为避免了创建和销毁连接的开销。

现在从 Web 服务器端来看,持久连接将允许其将内容“推送”到 Web 浏览器。现在 HTTP 不支持这个。因此,使用 javascript 的解决方法很少,页面基本上会在一段时间后刷新。

您可以看到许多基于 Web 的电子邮件提供商正在使用这种技巧,它们不断地在后台检查新邮件。这给人一种感觉,当有新邮件到达时,服务器会将新邮件通知“推送”到 Web 浏览器。但实际上,它实际上是一个不断检查服务器是否有新邮件的网络浏览器。

还有一点我想说明的是,我们实际上看不到任何页面刷新,这是因为另一个技巧只允许请求刷新页面的特定部分。 (提示:AJAX)

【讨论】:

  • 如果我保持与网络服务器的连接打开,浏览器会持续显示加载栏吗?
  • 网页浏览器只会显示加载栏,如果它确实请求某些东西。无论连接是否打开,背景内容都不应反映在浏览器的 UI 中。
  • 与持久性 http 连接相比,websocket 是如何工作的?你说它实际上是浏览器从服务器中提取数据,同时看起来服务器正在向客户端“推送”数据。 websockets真的实现了从服务端“推送”到客户端吗?
  • @Sunny 据我了解,websockets 通过 TCP 而不是 HTTP 工作,因此可以建立和保持“真正的”持久连接。
【解决方案3】:

我认为这是用于网站浏览器的 http 或 https 切换。如果您有旧的 https:// 并且您现在使用 http 浏览器 .htaccess 文件,那么这个问题应该通过 yoast 插件一页抓取页面创建。不要担心它不是重要的错误。对于黑客来说,如果您的 ssl 连接为空,这是一种入侵您网站的方法,他们应该将页面或域附加到您的 ssl 连接 e.b http://www.example.com 并且当您在浏览器中浏览 https://www.example.com 时,还有一些其他链接可以打开您的站点域。

解决方案始终使用您的网站完整地址:为保护黑客免受您网站的攻击,请为您的网站使用 ssl 和 https:/ 页面。

那么这个问题从来没有在任何测试站点或页面中出现过。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 2017-08-07
    • 2017-07-20
    • 2014-09-23
    • 2014-07-25
    • 2012-09-17
    • 1970-01-01
    相关资源
    最近更新 更多