Session 对于websocket服务器来说,使用SSL会话缓存是个坏主意吗?

Session 对于websocket服务器来说,使用SSL会话缓存是个坏主意吗?,session,caching,ssl,openssl,websocket,Session,Caching,Ssl,Openssl,Websocket,当客户端重新连接到SSL服务器时,SSL会话缓存消除了重新计算该客户端以前使用的相同加密协议的需要(同时还将所需的通信往返次数从2减少到1) 但是,websocket协议规定,如果没有充分的理由(例如,由于发生错误或用户关闭了浏览器/应用程序选项卡/窗口),客户端永远不应断开与websocket服务器的连接(?);因此,当websocket建立在SSL层之上时,服务器可以简单地假定任何websocket连接处于活动状态,除非另有通知,在此期间,还可以安全地假定任何连接的底层SSL会话保持有效 此

当客户端重新连接到SSL服务器时,SSL会话缓存消除了重新计算该客户端以前使用的相同加密协议的需要(同时还将所需的通信往返次数从2减少到1)

但是,websocket协议规定,如果没有充分的理由(例如,由于发生错误或用户关闭了浏览器/应用程序选项卡/窗口),客户端永远不应断开与websocket服务器的连接(?);因此,当websocket建立在SSL层之上时,服务器可以简单地假定任何websocket连接处于活动状态,除非另有通知,在此期间,还可以安全地假定任何连接的底层SSL会话保持有效

此外,websocket服务器需要能够处理许多并发的长寿命连接,并且由于每个连接都需要存储SSL会话缓存(?),因此在这种情况下,实现这些缓存可能会因为内存开销过大而对性能不利,对吗

对不起;这可能不止一个简单的问题,但我想验证我对这些问题的理解是否充分。

我认为这可能取决于软件架构。假设你有一个有100个页面的站点,用户经常在它们之间导航。它们中的许多都有一个websocket用于某些特殊用途,但它只在该页面显示期间保持活动状态。那么缓存就有意义了,因为您经常关闭/打开WebSocket

另一方面,您可能有一个只有一个页面的站点,您可以在其中打开websocket。内容由WebSocket和Ajax请求管理,但WebSocket在整个会话期间保持活动状态。在这种情况下,为WebSocket缓存SSL没有多大意义

因此,最后,我想说这取决于实施情况。如果你已经有了一个站点,你应该分析它的行为并调整你的缓存需求。另一方面,如果你开始设计一个新网站,了解不同场景的优缺点可能会帮助你构建一个更好、更高效的设计

我认为这可能取决于软件架构。假设你有一个有100个页面的站点,用户经常在它们之间导航。它们中的许多都有一个websocket用于某些特殊用途,但它只在该页面显示期间保持活动状态。那么缓存就有意义了,因为您经常关闭/打开WebSocket

另一方面,您可能有一个只有一个页面的站点,您可以在其中打开websocket。内容由WebSocket和Ajax请求管理,但WebSocket在整个会话期间保持活动状态。在这种情况下,为WebSocket缓存SSL没有多大意义

因此,最后,我想说这取决于实施情况。如果你已经有了一个站点,你应该分析它的行为并调整你的缓存需求。另一方面,如果你开始设计一个新网站,了解不同场景的优缺点可能会帮助你构建一个更好、更高效的设计


问候

谢谢。我想到了你第二段的情景,但在我的问题中没有提到。说得好,谢谢。我想到了你第二段的情景,但在我的问题中没有提到。很好。只有一个SSL会话缓存。SSL会话存储在每个会话的缓存中,而不是每个连接。来自同一客户端的多个同时连接使用同一会话。只有一个SSL会话缓存。SSL会话存储在每个会话的缓存中,而不是每个连接。来自同一客户端的多个同时连接使用同一会话。