如何让Sinatra根据静态文件的大小设置内容长度?

时间:2011-12-23 16:52:16

标签: ruby sinatra

我正在研究Sinatra应用程序并刚刚开始添加缓存。我的部分文件已正确缓存,但在public文件夹中提供图像时,我一直看到此警告:

  

警告:无法确定响应正文的内容长度。组   响应的内容长度或设置Response#chunked = true。

我不明白为什么我会收到这个警告。 Sinatra正在从公共文件夹中正确地提供文件,它说它将此标头默认为文件大小。

我正在使用the README中的以下示例设置:

set :static_cache_control => [:public, :max_age => 60]

before do
  cache_control :public, :must_revalidate, :max_age => 60
end

如何让Sinatra正确地将内容长度标题设置为静态文件的大小?

2 个答案:

答案 0 :(得分:1)

从webrick中删除违规行的另一种解决方法。它没那么有用:

cd `which ruby`/../../lib/ruby/1.9.1/webrick/ && sed -i '.bak' -e'/logger.warn/d' httpresponse.rb

(您可能需要sudo

答案 1 :(得分:-2)

显然,此消息可以安全忽略。

请参阅What does "WARN Could not determine content-length of response body." mean and how to I get rid of it?,或者如果您希望从来源获得回复,请参阅https://twitter.com/#!/luislavena/status/108998968859566080提出的问题和https://twitter.com/#!/tenderlove/status/108999110136303617的回答。

解决方法:使用瘦

如果消息困扰您,您可以使用thin来解决它。将gem 'thin'添加到Gemfile,然后使用thin:

启动服务器
% bundle install
% rails server thin