GO 如何实现 页面非阻塞?

2018-06-20 16:27:27 +08:00
 lauix
如题

页面非阻塞,就是一个页面访问要 5 秒,10 人访问不排队,并发进行。

Nodejs 自带,Python tornado gevent 都可以实现。

今天研究 golang 发现找不到如何实现。。。

研究了 channel 还是不行

问问 v2 的大神们,有解决方法吗? or 是否有 go web 的高性能解决方案。

基于 web 框架 iris 开发研究测试。
7647 次点击
所在节点    程序员
66 条回复
dreampuf
2018-06-21 09:35:49 +08:00
browser connection limitations
```
IE 6 and 7: 2
IE 8: 6
IE 9: 6
IE 10: 8
IE 11: 8
Firefox 2: 2
Firefox 3: 6
Firefox 4 to 46: 6
Opera 9.63: 4
Opera 10: 8
Opera 11 and 12: 6
Chrome 1 and 2: 6
Chrome 3: 4
Chrome 4 to 23: 6
Safari 3 and 4: 4
```

HTTP/1.1 RFC 2616 – Hypertext Transfer Protocol, section 8 – Connections. https://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.1.4
HTTP/2 Multiplexed support(one single TCP connection for all requests)
lauix
2018-06-21 10:11:17 +08:00
@ZSeptember 确实是浏览器的问题,感谢!
CloudnuY
2018-06-21 10:53:16 +08:00
亏我以前抢购还开好几个 tab ……
fcten
2018-06-21 11:03:42 +08:00
这个策略是很正常的。因为任何一个 GET 请求都是有可能被缓存的,所以并发执行 GET 往往是不必要的。一旦第一个 GET 请求返回并且允许缓存,后续 GET 请求都不必再执行。
这个策略主要是为了优化静态资源的加载。
dishonest
2018-06-21 11:23:57 +08:00
学习了~
xiadada
2018-06-21 15:30:10 +08:00
我用原生的 go http 测试了一下, get 同一个地址,确实是串行化的. 这是 Chrome 的问题. 我猜想没有一个 go server 框架在处理 request 的时候回串行处理. 所以请不要在 handler 方法里写什么 go func(){} 还有人不控制 go 的退出结果,后台裸跑 go,,更傻)

解决的办法很简单, get 地址可以变一变嘛, 请求里塞一个时间戳 /12312 /546 都看成同一个东西就好了.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/464449

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX