3

我在 RoR3 应用程序中有一个 Sinatra 应用程序。

我定义了一个 Sinatra 模块并在我的 RoR3 路由中添加了以下重定向

match '/v2', MySinatraModule, :anchor=>false

我的 Sinatra 应用程序提供 /v2/* 中的所有服务,但它们没有被压缩。我尝试在 config.ru 中添加“use Rack:Deflater”,但由于它通过 RoR3,因此无法正常工作。它是一个 json 服务,所以它返回字符串。

我尝试使用 GZip::ZLibWriter 并压缩输出,但在另一侧没有被解释为 gzipped。

有什么帮助吗?

4

1 回答 1

2

有 2 件事想到尝试。

首先,不要使用 RoR 作为路由器,而是让 Rack 处理它。有几种方法可以代替,最简单的可能是:

# 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不过应该为你处理。

于 2013-05-14T21:13:59.743 回答