Chrome 处理长连接时遇到的一些问题

最近在原有的 Webit 基础上开发了一个基于 HTTP 协议和 RESTful API 的消息推送程序。程序采用 Comet 模式实现 Server Push。

既然是 HTTP 协议,我便写了一个简单的 Web 客户端用于测试。这里记录一下其间遇到的一些问题。

  1. 多个标签页之间的长连接相互阻塞,通过开发者工具可以看到连接在 Stalled 这一阶段等待了 20 秒。
  2. 长连接在多个标签页之间跳跃,导致消 ...

Keep Alive 对 HTTPS 性能的巨大影响

最近为 Webit 添加了 HTTPS 支持。为了了解 HTTPS 下的性能,我重新对 Webit 进行了测试。

结果基本在预料之中。不过,也发现了一些其他的以往未能了解的东西。

下面是测试结果:

#ab -n 10000 -c 100 https://127.0.0.1:1039/

Requests per second:    891.10 [#/sec] (mean)

#ab -n ...

HTTP 协议缓存机制详解

浏览器第一次请求流程图:

浏览器再次请求时:

Expires策略:Expires是Web服务器响应消息头字段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。不过Expires 是HTTP 1.0的东西,现在默认浏览器均默认使用HTTP 1.1,所以它的作用基本忽略。Expires 的一个缺点就是,返回的到期时间是服务器端的时间,这样存在一个问题,如果客户端 ...

利用AJAX模拟HTTP长连接(LongPoll)来实现”服务器推”技术

Comet(彗星:某人给服务器推送技术起的名字)

核心图解:

最近在看“服务器推送技术”,在B/S结构中,通过某种magic使得客户端不需要通过轮询即可以得到服务端的最新信息 (比如股票价格,聊天室,webQQ、开心网、白社会),这样可以节省大量的带宽。

传统的轮询技术对服务器的压力很大,并且造成带宽的极大浪费。如果改用ajax轮询,可以降低带宽的负荷(因为服务器返回的不是完整页 ...