Json 在Sinatra应用程序上返回Gzip内容
我在RoR3应用程序中有一个Sinatra应用程序 我定义了一个Sinatra模块,并在我的RoR3路由中添加了以下重定向Json 在Sinatra应用程序上返回Gzip内容,json,ruby-on-rails-3,web-services,sinatra,gzip,Json,Ruby On Rails 3,Web Services,Sinatra,Gzip,我在RoR3应用程序中有一个Sinatra应用程序 我定义了一个Sinatra模块,并在我的RoR3路由中添加了以下重定向 match '/v2', MySinatraModule, :anchor=>false 我的Sinatra应用程序正在为/v2/*中的所有服务提供服务,但它们没有被gzip下载。 我尝试在config.ru中添加“use Rack:Deflater”,但由于它通过了RoR3,所以无法工作。它是一个json服务,因此返回字符串 我试着使用GZip::ZLibWrit
match '/v2', MySinatraModule, :anchor=>false
我的Sinatra应用程序正在为/v2/*中的所有服务提供服务,但它们没有被gzip下载。
我尝试在config.ru中添加“use Rack:Deflater”,但由于它通过了RoR3,所以无法工作。它是一个json服务,因此返回字符串
我试着使用GZip::ZLibWriter,它压缩了输出,但在另一端没有被解释为GZip
有什么帮助吗?我想到两件事可以试试 首先,不要使用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
您可以尝试的另一件事是将
内容编码
标题设置为“gzip”
,或者,如果这不起作用,您可以尝试将内容类型
标题设置为“application/x-gzip”
(不过,我对更改类型标题持怀疑态度)Rack::Deflater
应该为您处理这个问题。我如何启动这个服务器?“rails s”?@Tony Tryrackup config.ru
,或者任何指向这些东西的路径。我尝试使用rails s,它似乎工作正常。对Heroku有效吗?我需要试试。@Tony应该像运行Rack应用程序一样运行它。顺便说一句,很高兴你的工作顺利。