【问题标题】:How can I get Sinatra to set the content-length based on a static file's size?如何让 Sinatra 根据静态文件的大小设置内容长度?
【发布时间】:2012-01-26 23:08:24
【问题描述】:

我正在开发一个 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 正确地将 content-length 标头设置为静态文件的大小?

【问题讨论】:

标签: ruby sinatra


【解决方案1】:

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

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

(您可能需要sudo

【讨论】:

    【解决方案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
    

    【讨论】:

    • 投反对票是因为我没有回答实际问题吗?很公平——我不会再这样做了,即使我认为这是一个有用的答案......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 2016-06-03
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    相关资源
    最近更新 更多