Squid 不缓存文件(随机)

Squid 不缓存文件(随机)

我想使用拦截 squid 服务器来缓存我的网络中的用户经常下载的特定大型 zip 文件。

我已经在网关机器上配置了 squid,并且缓存正在为从我们网络之外的 Apache Web 服务器提供的“静态”zip 文件工作。

我希望 squid 缓存的文件是大于 100MB 的 zip 文件,这些文件由 heroku 托管的 Rails 应用程序提供。我设置了一个ETag标头(服务器上 zip 文件的 SHA 哈希)和Cache-Control: public标头。但是,这些文件不会被 squid 缓存。例如,这是一个未缓存的请求:

$ curl --no-keepalive -v -o test.zip --header "X-Access-Key: 20767ed397afdea90601fda4513ceb042fe6ab4e51578da63d3bc9b024ed538a" --header "X-Customer: 5" "http://MY_APP.herokuapp.com/api/device/v1/media/download?version=latest"
* Adding handle: conn: 0x7ffd4a804400
* Adding handle: send: 0
* Adding handle: recv: 0
...
> GET /api/device/v1/media/download?version=latest HTTP/1.1
> User-Agent: curl/7.30.0
> Host: MY_APP.herokuapp.com
> Accept: */*
> X-Access-Key: 20767ed397afdea90601fda4513ceb042fe6ab4e51578da63d3bc9b024ed538a
> X-Customer: 5
> 
  0     0    0     0    0     0      0      0 --:--:--  0:00:09 --:--:--     0< HTTP/1.1 200 OK
* Server Cowboy is not blacklisted
< Server: Cowboy
< Date: Mon, 18 Aug 2014 14:13:27 GMT
< Status: 200 OK
< X-Frame-Options: SAMEORIGIN
< X-Xss-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
< ETag: "95e888938c0d539b8dd74139beace67f"
< Content-Disposition: attachment; filename="e7cce850ae728b81fe3f315d21a560af.zip"
< Content-Transfer-Encoding: binary
< Content-Length: 125727431
< Content-Type: application/zip
< Cache-Control: public
< X-Request-Id: 7ce6edb0-013a-4003-a331-94d2b8fae8ad
< X-Runtime: 1.244251
< X-Cache: MISS from AAA.fritz.box
< Via: 1.1 vegur, 1.1 AAA.fritz.box (squid/3.3.11)
< Connection: keep-alive

在日志中,squid 报告了 TCP_MISS。

这是我的 squid 文件中的相关摘录:

# Squid normally listens to port 3128
http_port 3128
http_port 3129 intercept

# Uncomment and adjust the following to add a disk cache directory.
maximum_object_size 1000 MB
maximum_object_size_in_memory 1000 MB
cache_dir ufs /usr/local/var/cache/squid 10000 16 256
cache_mem 2000 MB

# Leave coredumps in the first cache dir
coredump_dir /usr/local/var/cache/squid
cache_store_log daemon:/usr/local/var/logs/cache_store.log

#refresh_pattern -i (/cgi-bin/|\?) 0    0%      0
refresh_pattern -i .(zip)       525600  100%    525600 override-expire ignore-no-cache ignore-no-store
refresh_pattern .               0       20%     4320

## DNS Configuration
dns_nameservers 8.8.8.8 8.8.4.4

尝试了一段时间后,我意识到 squid 有时会决定我的文件是否可缓存,有时则不行,这取决于我是否以及何时启用/禁用该dns_nameservers指令。

这可能是什么问题?

相关内容