我想测试连接到 Squid 服务器的客户端是否实际使用缓存数据,而不是直接访问互联网并检索数据。我已将所有客户端浏览器配置为从 Squid 服务器读取服务器:端口(即 10.42.0.1:3128)。那么我如何知道它们是从缓存还是从互联网检索信息。
我之所以问这个问题,是因为一个快速“测试”显示,在加载包含大量图片的多个页面时,速度相同。图片相同,但广告每次访问时都会发生变化。
我可以使用什么方法来检查他们是否正在使用缓存?
我运行了以下命令:sudo tail -f /var/log/squid3/access.log
并得到了几行不断滚动的内容:
1374553166.136 929 185.168.101.131 TCP_MISS/200 28198 GET http://www.amazon.de/gp/offer-listing/B000NOIW62/ref=sr_1_1_olp? - DIRECT/178.236.7.219 text/html
他们有一个TCP_MISS/200最后有一个直接的如上例所示。这种情况发生在我关闭局域网中的所有计算机时。当我尝试使用一台计算机时,我得到了以下信息sudo tail -f /var/log/squid3/access.log | grep HIT
1374553387.488 0 10.42.0.14 TCP_IMS_HIT/304 278 GET http://g-ecx.images-amazon.com/images/G/01/da/creatives/sn130.png - NONE/- image/png
因此它显示为TCP_IMS_HIT/304最后显示了没有任何
那么TCP_MISS、DIRECT、TCP_IMS_HIT和NONE代表什么意思呢?
缓存工作正常吗?
答案1
在运行 squid 的服务器上的终端中,运行以下命令
tail -f /var/log/squid3/access.log
然后观察用户访问网页的情况。如果每次用户点击某个内容时屏幕上都会滚动很多行,则表明他们正在使用代理服务器。如果未找到 squid 日志文件,请查看 /etc/squid 以查找日志文件的位置。
要退出上述命令,请按 ctrl+c
要查看它是否真的缓存了东西并且有用,应该有一些行表明它是一个命中。要查看日志文件内容请参阅 squid wiki。请注意,由于单个用户的 Web 浏览器已经在本地缓存了内容,因此缓存命中率不会像您希望的那样频繁。当多个用户在从缓存中删除该信息之前请求相同的页面时,您将获得最多的命中率。
例如,当向全体员工发送一封电子邮件说“查看此网站...”时
- TCP_MISS/200 表示请求的文档不在缓存中,但可以从 Web 服务器正常获取。末尾的指令表示文件已从 Web 服务器获取。
- TCP_IMS_HIT/304 意味着客户端询问文件是否已更改,而 squid 在 Web 服务器上检查了其日期/时间并发现它没有更改,因此它从本地缓存中将文件的副本发送给客户端。
是的,您的 squid 正在被使用并且正在作为缓存工作。