我的设置是让 Firefox 与 Web 服务器对话,并使用 Squid 作为缓存代理。
Firefox <--> Squid (ssl_bump) <--> Web 服务器
虽然图像(即使在 https 上)会被缓存,并且确实会看到缓存命中,但大多数 CSS 和 JavaScript 文件也会被缓存并释放:
1367165735.552 RELEASE -1 FFFFFFFF 0CF738871B9B86A15838CE1BE65BEE8E 200 1367165735 -1 1367265735 x-squid-internal/vary -1/0 GET https://9.123.122.180/common/js/dojo/1.6/dijit/form/Button.xd.js
1367165735.552 RELEASE 00 00000179 532661AE3C1B87904B52AC3FB1B9F971 200 1367165718 1333798649 -1 application/x-javascript 2495/2495 GET https://9.123.122.180/common/js/dojo/1.6/dijit/form/Button.xd.js
1367165735.552 SWAPOUT 00 00000192 128BF66F1EB8A67509CC774E3DFB50DC 200 1367165734 1333798649 -1 application/x-javascript 2495/2495 GET https://9.123.122.180/common/js/dojo/1.6/dijit/form/Button.xd.js
1367165737.268 RELEASE -1 FFFFFFFF 184B43B9627622DA2CC2415794961437 200 1367165737 -1 1367265737 x-squid-internal/vary -1/0 GET https://9.123.122.180/common/js/dojo/themes/tundra.css
1367165737.268 RELEASE 00 0000017D F5692CC660A0F4BA4FEDC211275BA0E4 200 1367165720 1366120055 -1 text/css 14723/14723 GET https://9.123.122.180/common/js/dojo/themes/tundra.css
1367165737.268 SWAPOUT 00 00000193 D1D0E32C07C74BF2D4F235EFEAC33DE1 200 1367165736 1366120055 -1 text/css 14723/14723 GET https://9.123.122.180/common/js/dojo/themes/tundra.css
我尝试使用配置文件中的开关,但似乎没有任何作用。
offline_mode on
vary_ignore_expire on
reply_header_access Last-Modified deny all
request_header_access If-Modified-Since deny all
request_header_access Cache-Control deny all
是否有其他标志/设置可以防止这些不必要的发布?我该如何进一步调试?
答案1
我临时做的是修改了 squid 的 src 目录中的 HttpHeader.cc,以对“Vary”标头视而不见。
原文如下:
{"Vary", HDR_VARY, ftStr}, /* for now */
我的解决方法:
{"Vary-junk", HDR_VARY, ftStr}, /* for now */
但确实,这是一个粗糙的黑客行为,除了临时测试外,完全不适合做任何事情。希望有更好的解决方法。