ant*_*yer 6 ruby-on-rails http-headers http-status-code-304
鉴于我有 Rails 控制器,它访问数据库以检索数据并使用序列化程序呈现 JSON 响应,必须满足什么条件才能使 rails 以 304 响应?
如果它必须将先前的响应与当前检索到的响应进行比较,它是哪种比较?
魔法发生在Rack::ETag
和Rack::ConditionalGet
。(我的位于$GEM_HOME/rack-1.5.5/lib/rack/conditionalget.rb
和$GEM_HOME/rack-1.5.5/lib/rack/etag.rb
。)
这些是中间件。
Rack::ETag
从主体(与机架函数返回的主体相同@app.call
)中生成摘要,并将响应ETag
标头设置为此值。至少对于 Rails 4.0,它是 MD5 十六进制摘要。
Rack::ConditionalGet
将请求的If-None-Match
标头与响应的ETag
标头进行比较。如果它们匹配,则返回 304。
Dip*_*pta -1
服务器在来自同一请求者的先前和当前请求中查找 Cache-Control、Content-Location、Date、ETag、Expires 和 Vary http 标头值。
如果一切相同,则返回 304 响应,否则更改内容并返回 200。
您可以查看https://httpstatuses.com/304了解更多信息。
归档时间: |
|
查看次数: |
2805 次 |
最近记录: |