我正在尝试异步Sinatra并遇到问题。
使用以下简单代码时:
require 'sinatra'
require 'sinatra/async'
Sinatra.register Sinatra::Async
aget '/delay/?' do
logger.info "Connected"
EM.add_timer(5) { body {"delayed for 5 seconds" } }
end
当我同时请求/延迟/用ab时,它运行正常,对所有请求花费5秒。
但是当我从2个Chrome标签页(或Firefox)中请求/延迟/时,它会阻止,并且它会按顺序执行,导致第二个请求需要10秒。
有趣的是,从多个Safari标签请求它,再次执行正常(并行)。
任何想法,可能导致这种行为的原因是什么?
宝石版本:
gem 'sinatra', "~> 1.3.2"
gem "eventmachine", "1.0.0.beta.4.1"
gem 'thin', "~> 1.3.1"
gem "async_sinatra", "~> 1.0.0"
答案 0 :(得分:0)
更新:似乎浏览器缓存是导致Firefox和Chrome的原因。任何URL只能有1个活动缓存写入。添加查询参数实际上可以解决此问题。