我在RoR3应用程序中有一个Sinatra应用程序。
我定义了一个Sinatra模块,并在我的RoR3路由中添加了以下重定向
match '/v2', MySinatraModule, :anchor=>false
我的Sinatra应用程序正在服务/ v2 / *中的所有服务,但它们没有被gzip压缩。 我尝试在config.ru中添加“使用Rack:Deflater”,但由于它通过RoR3,因此无效。它是一个json服务,所以它返回字符串。
我尝试使用GZip :: ZLibWriter并压缩输出,但在另一端不被解释为gzip压缩。
任何帮助?
答案 0 :(得分:2)
有两件事需要考虑尝试。
首先,让Rack处理它,而不是使用RoR作为路由器。有几种方法可以做到这一点,最简单的可能是:
# config.ru
require 'sinatra_module'
require 'rails_app'
map "/" do
run RailsApp
end
map "/v2" do
use Rack::Deflater # you might want to put this in the Sinatra app.
run MySinatraModule
end
您可能尝试的另一件事是将Content-Encoding
标题设置为"gzip"
,或者,如果这不起作用,您可以尝试将Content-type
标题设置为"application/x-gzip"
(我更喜欢改变类型标题)。 Rack::Deflater
应该为你处理。