【问题标题】:How do I set HTTP Headers in Ruby/Sinatra app, hosted on Heroku?如何在 Heroku 上托管的 Ruby/Sinatra 应用程序中设置 HTTP 标头?
【发布时间】:2011-05-11 02:54:50
【问题描述】:

我有一个基于 Ruby 和 Sinatra 的工作应用程序,部署在 Heroku 上。

我想利用 Heroku 上可用的 HTTP 缓存,它使用 Varnish。

我不确定设置标题的最佳方法是什么,以及正确的语法。

对最佳方法和语法有什么想法吗?

before do
    headers "Content-Type" => "text/html; charset=utf8"
end

get '/' do
    headers['Cache-Control'] = 'public, max-age=600'

    # SOME STUFF HERE

    haml :home, {:layout => :layout_minfooter}

end

【问题讨论】:

    标签: ruby http-headers heroku sinatra varnish


    【解决方案1】:

    在 Sinatra 中,您可以使用 cache_control 方法:

    get '/' do
      # Cache for 24 hours
      cache_control :public, max_age: 86400
    
      # Your magic goes here
    end
    

    【讨论】:

      【解决方案2】:

      通常动态生成的页面没有缓存,所以

      response.headers['Cache-Control'] = 'public, max-age=300'
      

      header 是正确的起点。

      尝试使用“Use a Web-based service”中的一项服务,看看它们是否显示在从您的站点发回的 HTTPd 标头中。

      【讨论】:

      • 看起来我已经正确设置了,通过链接的工具我可以确认。
      • 处理缓存问题是 a** 中的一个痛苦,无论是从客户端还是服务器端。
      【解决方案3】:

      您还可以使用以下语法访问响应对象的标头字段:

      response['Cache-Control'] = 'public, max-age=600'
      

      【讨论】:

        猜你喜欢
        • 2011-06-16
        • 2015-07-11
        • 1970-01-01
        • 1970-01-01
        • 2021-12-23
        • 2019-05-17
        • 2014-10-03
        • 1970-01-01
        • 2019-01-10
        相关资源
        最近更新 更多