簡體   English   中英

機架::緩存/機架:: Etag 304

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM