[英]Rack::Cache/Rack::Etag 304
我使用Rack:Etag根據服務器的響應生成適當的etag值,並且為了進行開發,我使用Rack :: Cache驗證我期望進行的緩存確實可以
但我有一個小困境:
我發送一個請求並取回這些標頭
Age →0
Cache-Control →public, max-age=10
Connection →keep-alive
Content-Length →4895
Content-Type →application/json; charset=UTF-8
Date →Wed, 02 Oct 2013 06:55:42 GMT
ETag →"dd65de99f4ce58f9de42992c4e263e80"
Server →thin 1.5.1 codename Straight Razor
X-Content-Digest →0879e41b0d8e9b351f517dd46823095e0e99abd8
X-Rack-Cache →stale, invalid, store
如果我在11秒后使用If-None-Match = dd65de99f4ce58f9de42992c4e263e80發送新請求,那么我希望獲得304,但始終獲得帶有上述標頭的200。
我想念什么?
可能是因為max-age
指令設置為10
當緩存響應中存在max-age cache-control指令時,如果響應的當前年齡大於對該資源的新請求時給定的年齡值(以秒為單位),則該響應是陳舊的。
雖然,您已經知道嗎? 當您嘗試11秒后!
我認為解決方案是按照以下步驟加載機架中間件以進行coorect鏈接
use Rack::Cache
use Rack::ConditionalGet
use Rack::ETag
還要在哈希周圍發送帶有“”的If-None-Match,我認為這似乎很脆弱
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.