花了几个小时configuration鱿鱼3.2.5,我只得到TCP_MISS。 为了缩小这个问题,我将重点关注一个我想要caching的PNG文件,但是请注意,我为每个请求获取TCP_MISS,而不仅仅是PNG文件。 PNG文件可以在这个地址访问。 刷新不起作用。
当我尝试通过鱿鱼加载它,我在access.log中得到这一行:
1357671721.566 127 127.0.0.1 TCP_MISS / 200 618 GET http://flags.tatoeba.org/img/flags/epo.png – HIER_DIRECT / 86.65.39.22 image / png
而那些在cache.log中:
2013/01/08 20:02:59.768 kid1| client_side.cc(2298) parseHttpRequest: HTTP Client local=127.0.0.1:3303 remote=127.0.0.1:42816 FD 19 flags=1 2013/01/08 20:02:59.769 kid1| client_side.cc(2299) parseHttpRequest: HTTP Client REQUEST: --------- GET http://flags.tatoeba.org/img/flags/epo.png HTTP/1.1 User-Agent: Wget/1.14 (linux-gnu) Accept: */* Host: flags.tatoeba.org Connection: Close Proxy-Connection: Keep-Alive ---------- 2013/01/08 20:02:59.856 kid1| http.cc(2221) httpStart: httpStart: "GET http://flags.tatoeba.org/img/flags/epo.png" 2013/01/08 20:02:59.856 kid1| http.cc(2177) sendRequest: HTTP Server local=192.168.1.13:56866 remote=86.65.39.22:80 FD 22 flags=1 2013/01/08 20:02:59.856 kid1| http.cc(2178) sendRequest: HTTP Server REQUEST: --------- GET /img/flags/epo.png HTTP/1.1 User-Agent: Wget/1.14 (linux-gnu) Accept: */* Host: flags.tatoeba.org Via: 1.1 nomada (squid/3.2.5) Cache-Control: max-age=15600540 Connection: keep-alive ---------- 2013/01/08 20:02:59.898 kid1| ctx: enter level 0: 'http://flags.tatoeba.org/img/flags/epo.png' 2013/01/08 20:02:59.898 kid1| http.cc(689) processReplyHeader: processReplyHeader: key 'EA06B401749A4C13ED95E8B5788A3010' 2013/01/08 20:02:59.898 kid1| http.cc(732) processReplyHeader: HTTP Server local=192.168.1.13:56866 remote=86.65.39.22:80 FD 22 flags=1 2013/01/08 20:02:59.898 kid1| http.cc(733) processReplyHeader: HTTP Server REPLY: --------- HTTP/1.1 200 OK Date: Tue, 08 Jan 2013 19:03:18 GMT Server: Apache/2.2.16 (Debian) Accept-Ranges: bytes Content-Length: 219 Vary: User-Agent Expires: Fri, 21 Dec 2012 00:00:00 GMT Cache-Control: public, no-transform Content-Type: image/png Via: 1.1 tatoeba.fsffrance.org Keep-Alive: timeout=15, max=100 Connection: Keep-Alive PNG ---------- 2013/01/08 20:02:59.898 kid1| ctx: exit level 0 2013/01/08 20:02:59.898 kid1| ctx: enter level 0: 'http://flags.tatoeba.org/img/flags/epo.png' 2013/01/08 20:02:59.898 kid1| http.cc(910) haveParsedReplyHeaders: haveParsedReplyHeaders: HTTP CODE: 200 2013/01/08 20:02:59.898 kid1| http.cc(640) httpMakeVaryMark: httpMakeVaryMark: user-agent="Wget%2F1.14%20(linux-gnu)" 2013/01/08 20:02:59.898 kid1| ctx: exit level 0 2013/01/08 20:02:59.899 kid1| client_side.cc(1362) sendStartOfMessage: HTTP Client local=127.0.0.1:3303 remote=127.0.0.1:42816 FD 19 flags=1 2013/01/08 20:02:59.899 kid1| client_side.cc(1363) sendStartOfMessage: HTTP Client REPLY: --------- HTTP/1.1 200 OK Date: Tue, 08 Jan 2013 19:03:18 GMT Server: Apache/2.2.16 (Debian) Accept-Ranges: bytes Content-Length: 219 Vary: User-Agent Expires: Fri, 21 Dec 2012 00:00:00 GMT Cache-Control: public, no-transform Content-Type: image/png X-Cache: MISS from nomada X-Cache-Lookup: MISS from nomada:3303 Via: 1.1 tatoeba.fsffrance.org, 1.1 nomada (squid/3.2.5) Connection: keep-alive ---------- 2013/01/08 20:02:59.899 kid1| http.cc(1044) persistentConnStatus: local=192.168.1.13:56866 remote=86.65.39.22:80 FD 22 flags=1 eof=0
我的configuration文件看起来很像默认的,除了几个更改:
cache_effective_user squid cache_effective_group squid acl localnet src 10.0.0.0/8 # RFC1918 possible internal network acl localnet src 172.16.0.0/12 # RFC1918 possible internal network acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl localnet src fc00::/7 # RFC 4193 local private network range acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl CONNECT method CONNECT http_access allow localhost manager http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports debug_options ALL,1 11,3 31,3 65,3 http_access allow localnet http_access allow localhost http_access deny all http_port 3303 cache_dir ufs /var/cache/squid 600 16 256 cache_mem 256 MB coredump_dir /var/cache/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern -i \.(gif|png|jpg|jpeg|ico|bmp)$ 260000 90% 260009 override-expire ignore-no-cache ignore-no-store ignore-private refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320
我的caching目录属于squid:squid,所以没有问题。 我很难得到答案。
这里是我的access.log块:
1357671487.203 212 127.0.0.1 TCP_MISS/200 8263 GET http://i2.ytimg.com/vi/mwKa-gjx14k/mqdefault.jpg - HIER_DIRECT/74.125.230.238 image/jpeg 1357671487.235 134 127.0.0.1 TCP_MISS/200 10762 GET http://i4.ytimg.com/vi/O0bftzEOt9c/mqdefault.jpg - HIER_DIRECT/74.125.230.224 image/jpeg 1357671487.296 253 127.0.0.1 TCP_MISS/200 7415 GET http://i4.ytimg.com/vi/GPUnq0JSqRk/mqdefault.jpg - HIER_DIRECT/74.125.230.224 image/jpeg 1357671488.188 474 127.0.0.1 TCP_MISS/200 294 POST http://serverfault.com/posts/0/editor-heartbeat/ask - HIER_DIRECT/69.59.197.21 application/json 1357671505.309 255 127.0.0.1 TCP_MISS/204 533 GET http://s.youtube.com/s? - HIER_DIRECT/74.125.230.224 text/html 1357671516.404 0 127.0.0.1 TCP_MISS/503 6350 GET http://s.youtube.com/s? - HIER_NONE/- text/html 1357671533.221 0 127.0.0.1 TCP_MISS/503 4106 POST http://serverfault.com/posts/0/editor-heartbeat/ask - HIER_NONE/- text/html 1357671582.022 481 127.0.0.1 TCP_MISS/200 439 POST http://serverfault.com/posts/0/editor-heartbeat/ask - HIER_DIRECT/69.59.197.21 application/json 1357671597.029 1543 127.0.0.1 TCP_MISS/200 9700 GET http://tatoeba.org/eng/sentences/show/673940 - HIER_DIRECT/86.65.39.22 text/html 1357671597.166 47 127.0.0.1 TCP_MISS/200 1426 GET http://tatoeba.org/js/sentences.random.js? - HIER_DIRECT/86.65.39.22 application/javascript 1357671597.205 86 127.0.0.1 TCP_MISS/200 2174 GET http://tatoeba.org/js/sentences_lists.menu.js? - HIER_DIRECT/86.65.39.22 application/javascript 1357671597.254 136 127.0.0.1 TCP_MISS/200 1522 GET http://css.tatoeba.org/css/sentences/show.css? - HIER_DIRECT/86.65.39.22 text/css 1357671597.254 136 127.0.0.1 TCP_MISS/200 1324 GET http://css.tatoeba.org/css/elements/furigana.css - HIER_DIRECT/86.65.39.22 text/css 1357671597.254 48 127.0.0.1 TCP_MISS/200 1809 GET http://tatoeba.org/favicon.ico - HIER_DIRECT/86.65.39.22 image/x-icon 1357671597.258 137 127.0.0.1 TCP_MISS/200 1150 GET http://js.tatoeba.org/js/furigana.js - HIER_DIRECT/86.65.39.22 application/javascript 1357671597.258 139 127.0.0.1 TCP_MISS/200 1339 GET http://js.tatoeba.org/js/generic_functions.js? - HIER_DIRECT/86.65.39.22 application/javascript 1357671597.258 91 127.0.0.1 TCP_MISS/200 2471 GET http://js.tatoeba.org/js/autocompletion.js - HIER_DIRECT/86.65.39.22 application/javascript 1357671597.295 179 127.0.0.1 TCP_MISS/200 3232 GET http://css.tatoeba.org/css/layouts/default.css - HIER_DIRECT/86.65.39.22 text/css 1357671597.332 39 127.0.0.1 TCP_MISS/200 1234 GET http://css.tatoeba.org/css/elements/navigation.css - HIER_DIRECT/86.65.39.22 text/css 1357671597.339 43 127.0.0.1 TCP_MISS/200 1809 GET http://tatoeba.org/favicon.ico - HIER_DIRECT/86.65.39.22 image/x-icon 1357671597.342 49 127.0.0.1 TCP_MISS/200 1774 GET http://css.tatoeba.org/css/elements/sentences_group.css - HIER_DIRECT/86.65.39.22 text/css 1357671597.377 82 127.0.0.1 TCP_MISS/200 1032 GET http://css.tatoeba.org/css/elements/logs_colors.css - HIER_DIRECT/86.65.39.22 text/css 1357671597.384 90 127.0.0.1 TCP_MISS/200 1014 GET http://css.tatoeba.org/css/elements/comment.css - HIER_DIRECT/86.65.39.22 text/css 1357671597.384 89 127.0.0.1 TCP_MISS/200 1124 GET http://css.tatoeba.org/css/elements/autocompletion.css - HIER_DIRECT/86.65.39.22 text/css 1357671597.384 89 127.0.0.1 TCP_MISS/200 1023 GET http://css.tatoeba.org/css/elements/logs_annexe.css - HIER_DIRECT/86.65.39.22 text/css 1357671597.410 292 127.0.0.1 TCP_MISS/200 21703 GET http://js.tatoeba.org/js/jquery-mini.js - HIER_DIRECT/86.65.39.22 application/javascript 1357671597.794 131 127.0.0.1 TCP_MISS/200 1284 GET http://flags.tatoeba.org/img/valid_16x16.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.795 133 127.0.0.1 TCP_MISS/200 595 GET http://flags.tatoeba.org/img/arrow_down.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.800 137 127.0.0.1 TCP_MISS/200 1256 GET http://flags.tatoeba.org/img/add_to_list.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.801 137 127.0.0.1 TCP_MISS/200 618 GET http://flags.tatoeba.org/img/flags/epo.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.846 50 127.0.0.1 TCP_MISS/200 1180 GET http://flags.tatoeba.org/img/direct_translation.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.846 51 127.0.0.1 TCP_MISS/200 3008 GET http://flags.tatoeba.org/img/loading.gif - HIER_DIRECT/86.65.39.22 image/gif 1357671597.846 45 127.0.0.1 TCP_MISS/200 1539 GET http://flags.tatoeba.org/img/flags/eng.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.847 45 127.0.0.1 TCP_MISS/200 532 GET http://flags.tatoeba.org/img/flags/nld.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.860 197 127.0.0.1 TCP_MISS/200 1072 GET http://flags.tatoeba.org/img/loading-small.gif - HIER_DIRECT/86.65.39.22 image/gif 1357671597.887 224 127.0.0.1 TCP_MISS/200 16497 GET http://flags.tatoeba.org/img/TatoebaProjectBeta.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.892 45 127.0.0.1 TCP_MISS/200 1031 GET http://flags.tatoeba.org/img/indirect_translation.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.892 45 127.0.0.1 TCP_MISS/200 520 GET http://flags.tatoeba.org/img/flags/ita.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.892 45 127.0.0.1 TCP_MISS/200 525 GET http://flags.tatoeba.org/img/flags/deu.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.892 44 127.0.0.1 TCP_MISS/200 718 GET http://flags.tatoeba.org/img/flags/jpn.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.908 47 127.0.0.1 TCP_MISS/200 541 GET http://css.tatoeba.org/img/bg_main.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.930 43 127.0.0.1 TCP_MISS/200 694 GET http://css.tatoeba.org/img/search_bar_body.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.933 39 127.0.0.1 TCP_MISS/200 584 GET http://css.tatoeba.org/img/module_background.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.935 42 127.0.0.1 TCP_MISS/200 1572 GET http://css.tatoeba.org/img/search_bar_right.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.936 43 127.0.0.1 TCP_MISS/200 1574 GET http://css.tatoeba.org/img/search_bar_left.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.936 42 127.0.0.1 TCP_MISS/200 1378 GET http://css.tatoeba.org/img/title.png - HIER_DIRECT/86.65.39.22 image/png 1357671597.954 45 127.0.0.1 TCP_MISS/200 1026 GET http://css.tatoeba.org/img/audio_unavailable.png - HIER_DIRECT/86.65.39.22 image/png
上游网站服务器过去会返回一个到期时间,这将导致Squid立即考虑对象陈旧。
Expires: Fri, 21 Dec 2012 00:00:00 GMT
这看起来像一个硬编码的时间戳,你可能希望Web服务器返回一个相对的到期时间戳(例如现在加1个月)。
如果你发现这个答案,因为Squid没有caching你期望的对象,可以在/etc/squid3/squid.conf设置debug_options = ALL,2 。
在logging响应头文件后,注意这样的行:
store.cc(1003) checkCachable: StoreEntry::checkCachable: NO: too big
这可能是由于maximum_object_size被设置得太低(默认是4 MB),或者是由这里描述的Squid错误引起的( 在Ubuntu启动板中也存在 ),如果它发生在squid.conf cache_dir之后,会导致maximum_object_size被忽略。在标准的分布式configuration文件模板中。
store.cc(994) checkCachable: StoreEntry::checkCachable: NO: not cachable
非高速caching也可能由远程服务器尝试禁用客户端或代理高速caching引起,通过发送各种头部以及回复(如HTTP标准中所述 ),例如:
ExpiresdateExpires (迫使立即到期)或 Cache-control: no-cache或Cache-control: private 。 客户端(如Web浏览器)也可以显式禁用caching。 例如,如果您使用依赖于浏览器的重新加载或强制重新加载选项,但是按惯例:
然后,浏览器将显式禁用caching,可能使用以下机制之一(另见RFC 2616第14.9.4节 ):
有时用户代理可能需要或者需要坚持一个caching使用原始服务器重新validation其caching条目(而不仅仅是沿着到原始服务器的path上的下一个caching),或者从原始服务器重新载入它的caching条目。 如果高速caching或源服务器高估了高速caching响应的到期时间,则可能需要进行端到端重新validation。 如果由于某种原因caching项已损坏,则可能需要进行端到端重新加载。
客户端可以使用Cache-Control请求指令指定这三种操作:…
该请求包含“无caching”caching控制指令,或者为了与HTTP / 1.0客户端兼容,“Pragma:no-cache”。
如果你想确保客户端没有做任何事情来故意禁用caching,你可以使用你的Squid / HTTP代理,使用wget下载相同的文件来testing它:
http_proxy=http://yourproxy:3128 wget -O /dev/null http://yourhost/yourfile
检查Squid日志,看看发生了什么请求,以及是否Squid决定caching响应,以及为什么(见上文)。