我想到的一个问题是可以从一开始就缓存网络套接字吗? 在我的拓扑中,我在通过双 ISP 连接连接到互联网的 HAProxy 服务器后面有 2 个 Apache 服务器(带有 Google PageSpeed 模块)。我的用户正在使用带有动态和静态 Web 内容的 xxx.com 端,这些内容目前未被缓存(因为 Varnish 不支持 SSL/TLS)
我的计划是将 varnish 放在运行 HAProxy 的同一台机器上,并将它(varnish 服务器)用作 HAProxy 的后盾。
所以最后我会有这样的东西:
HAProxy(使用 SSL)+ Varnish -> Apache 1 或 Apache 2 作为网络服务器后端 HAProxy(使用 SSL)-> Jetty 1 或 Jetty 2 作为 websockets 后端
Jetty以Mongo+MqSL+Neo4j为DB后端连接到Jboss应用服务器。
这将为我提供使用 Varnish 缓存动态和静态连接、使用 HAProxy 保持 SSL 并保持拓扑清洁的好方法。
但是,我的解决方案中还有另一个关键服务器: 我正在使用 Jetty(与 cometd)实现网络套接字(我想转移到 Socket.io,或带有 Web-Stomp 的 SockJS),这是通过 HAProxy 路由的。
我通过 OORT 使用 Clustered Cometd,我想了解缓存这些内容是否有任何意义,因为它被认为是实时数据。 我问的原因是我正在考虑转向某些 CDN 解决方案以加快我的性能,但据我所知 – Websockets 无法缓存所以这里的重点只是插入更多的静态和动态内容。
这是有道理的还是我在这里失去了什么?
谢谢 时髦
最佳答案
您可以通过缓存代理(并非所有都支持)隧道 websockets,但缓存 websockets 本身将不起作用,因为它们不适合缓存的必要方案,例如一个请求每次都会导致相同的响应。
关于缓存 WebSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23919062/