WebSocket+CDN
WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议,本质上是一个TCP协议
已经有了HTTP协议,为什么还需要WebSocket?
因为HTTP的通信只能由客户端发起,而无法做到服务器主动向客户端推送信息。这种单向请求的特点,导致如果服务器有连续的状态变化,客户端就很难获取,只能采用轮询的方式,即每隔一段时间,就发送一个询问,了解服务器有没有新的信息,最典型的场景就是聊天室。但是轮询的效率低,非常浪费资源,所以WebSocket出现了
WebSocket使得客户端与服务器之间的数据交换变得简单,允许服务端主动向客户端推送数据,浏览器和服务器只需要完成一次握手,两者之间就可以建立持久性的连接,并进行双向数据传输

WebSocket特点:
1.建立在TCP协议之上,服务器端的实现比较容易
2.与HTTP协议有着良好的兼容性,默认端口也是80和443,并且握手阶段采用HTTP协议,因此握手时不容易屏蔽,能通过各种HTTP代理服务器
3.数据格式比较轻量,性能开销小,通信高效
4.可以发送文本,也可以发送二进制数据
5.没有同源限制,客户端可以与任意服务器通信
6.协议标识符是ws(如果加密,则为wss),服务器网址就是URL
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> <script type="text/javascript"> function WebSocketTest() { if ("WebSocket" in window) { alert("您的浏览器支持 WebSocket!"); // 打开一个 web socket var ws = new WebSocket("ws://localhost:9998/echo"); ws.onopen = function() { // Web Socket 已连接上,使用 send() 方法发送数据 ws.send("发送数据"); alert("数据发送中..."); }; ws.onmessage = function (evt) { var received_msg = evt.data; alert("数据已接收..."); }; ws.onclose = function() { // 关闭 websocket alert("连接已关闭..."); }; } else { // 浏览器不支持 WebSocket alert("您的浏览器不支持 WebSocket!"); } } </script> </head> <body> <div id="sse"> <a href="javascript:WebSocketTest()">运行 WebSocket</a> </div> </body> </html>
CDN:Content Delivery Network内容分发网络,就是在用户和服务器之间加一个缓存机制,根据地理位置让用户到最近的服务器访问。
CDN是一组分布在多个不同的地理位置的WEB服务器,用于更加有效的向用户发布内容,在优化性能时,会根据距离的远近来选择 。当CDN服务器中缓存有用户请求的数据时,就可以从CDN直接返回给浏览器,因此就可以提高访问速度。