0

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 が返されます。

何が欠けていますか?

4

2 に答える 2

1

解決策は、 coorect チェーンのために次のようにラックミドルウェアをロードすることだったと思います

use Rack::Cache
use Rack::ConditionalGet
use Rack::ETag

また、ハッシュの周りに "" を指定して If-None-Match を送信します。これはかなり壊れやすいと思います。

于 2013-10-02T09:06:02.073 に答える
1

max-ageディレクティブが10に設定されていることが原因でしょうか

max-age cache-control ディレクティブがキャッシュされた応答に存在する場合、現在の経過時間がそのリソースの新しい要求時に指定された経過時間の値 (秒単位) よりも大きい場合、応答は古くなります。

とはいえ、あなたはすでにそれを知っていましたか?あなたが11秒後に試したように!

于 2013-10-02T07:13:07.160 に答える