哪些响应标头导致 Squid 的 refresh_pattern 无效?

哪些响应标头导致 Squid 的 refresh_pattern 无效?

我无法让 Squid 缓存具有以下原始响应标头的任何内容。

当我反复使用 curl 时,我收到以下响应

> curl -s -D - -o /dev/null -x "http://localhost:3128" http://my-domain.com/test.jpeg
HTTP/1.1 200 OK
x-powered-by: Express
access-control-allow-origin: undefined
Vary: Accept
Content-Type: image/jpeg
Cache-Control: private, no-transform, max-age=0
Date: Thu, 11 Feb 2021 12:44:00 GMT
Server: Google Frontend
X-Cache: MISS from b6cf67dac785
X-Cache-Lookup: HIT from b6cf67dac785:3128
Transfer-Encoding: chunked
Via: 1.1 google, 1.1 b6cf67dac785 (squid/4.13)
Connection: keep-alive

它看起来像是在缓存中找到了图像,但通过服务器重新验证,然后从服务器获取了新的副本?

我不想让它先重新验证 - 它需要直接从缓存中提供它。我是 Squid 的唯一客户端 - 并且我想强制缓存每个图像,而不管原始服务器的标头如何。我知道这会破坏 HTTP 接受的协议 - 但我仍然想力量鱿鱼缓存所有内容. (它只会获取图像)

这是我正在使用的 refresh_pattern 指令

refresh_pattern . 525600 100% 525600 override-expire override-lastmod ignore-reload ignore-no-cache ignore-no-store reload-into-ims ignore-must-revalidate ignore-private ignore-auth store-stale

我看不出哪些响应标头导致我的 refresh_pattern 无效?

我还设置了以下两个指令。有或没有它们 - 没有区别。

minimum_expiry_time 1 year
max_stale 1 year

作为参考,我还附加了与我当前的refresh_pattern配合良好缓存的响应标头。

HTTP/1.1 200 OK
x-goog-generation: 1613049999992692
x-goog-metageneration: 3
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 159962
x-goog-meta-: 
x-goog-custom-time: 1970-01-01T00:00:00Z
Content-Type: image/jpeg
x-goog-hash: crc32c=6EwUgA==
x-goog-hash: md5=OGlL99uyN7kr4j0umpn5pw==
x-goog-storage-class: STANDARD
Accept-Ranges: bytes
X-GUploader-UploadID: ABg5-UwYGdi405Mc_A1_ppi6O7NIXd3UKOpqbzcj1WvMzVN-N3U1hb-O_FdSGdBt5ZPDWU63egT-kwi4lrx8RVu4k_0
Date: Thu, 11 Feb 2021 13:27:47 GMT
Cache-Control: private, no-transform, max-age=0
Expires: Thu, 11 Feb 2021 13:27:47 GMT
Last-Modified: Thu, 11 Feb 2021 13:26:40 GMT
ETag: "38694bf7dbb237b92be23d2e9a99f9a7"
Content-Length: 0
Server: UploadServer
Age: 0
X-Cache: HIT from b6cf67dac785
X-Cache-Lookup: HIT from b6cf67dac785:3128
Via: 1.1 b6cf67dac785 (squid/4.13)
Connection: keep-alive

相关内容