问题的发现:
我使用firebug之类的工具检查squid的缓存加速效果(主要是检查squid的HTTP响应header),发现手工刷新浏览器时(这时squid会返回304状态),发现304状态的响应竟然是MISS状态,既然是MISS,则意味着squid会请求后端机器。
这证实我的怀疑,我使用iptables阻断squid和后段机器通信,再刷新浏览器,竟然无法加载已经被缓存的静态资源!
按常规的分析,缓存未过期时,应该直接使用缓存,不应该请求后端机器。可以想象,如果每一次刷新(表现为客户端请求header中包含If-Modified-Since),squid都要和后端机器通信,检查资源是否已经被修改,如果是这样,可想而知性能是多么糟糕。
后来经过反复求证,有一个关键的参数ignore-reload会影响squid这种行为,在我们的生产环境的squid机器上将这个参数加上之后,再使用firebug检查发现,所有304状态的响应,全是HIT命中状态。
再借助第三方检测工具(boree.com),发现整体页面性能有数倍提升,极少出现个另静态资源造成的阻塞现象。
squid的关键配置项如下:
refresh_pattern . 0 20% 4320 ignore-reload
可以想象,如果在缓存未过期时,源站不可到达(源站服务不可用,或到源站网络中断),在每一次刷新请求中,squid都要和后端机器通信,检查资源是否被修改,后果相当严重。
而加上以上参数,只要缓存未过期,哪怕源站不可达,squid也可以对外正常提供服务。
这个参数很重要,强烈建议使用squid的用户一定要注意,这么做虽然无法利用刷新浏览器更新squid缓存,但是为了性能,这么做是完全值得的。
如果检查您的squid配置是否合理?
使用firebug检查squid返回304状态的资源是否是HIT, 再根据本文参考进行设置。
设置完毕之后执行以下命令即可:
squid -k check
squid -k reconfigure
分享到:
相关推荐
这个版本是Squid-cache 3.x系列的一个稳定发行版,它基于C++语言进行了重构,相比之前的2.x版本,不仅性能得到了提升,而且代码的可读性和可维护性也显著增强。 在Squid 3.1.19中,主要包含了以下关键知识点: 1. ...
本报告对比了Squid、Varnish和Ngx_cache三款缓存软件的性能。首先,从测试环境来看,本次测试所使用的Squid、Ngx_cache(也就是Varnish)、Nginx_cache均运行在具有单硬盘资源的服务器上,并为缓存分配了180G的存储...
Squid是一个高性能的代理缓存服务器,用于加速互联网访问,通过缓存经常请求的网页,减少对网络带宽的占用,提高网络效率。它支持多种协议,包括HTTP、HTTPS、FTP等,并且可以作为透明代理或者匿名代理使用。 在32...
本文档将详细介绍如何设置 Squid Cache_mem 大小,以提高代理服务器的性能。 设置 Squid Cache_mem 大小 Squid Cache_mem 是 Squid 代理服务器中的一种缓存机制,用于存储经常访问的内容,以减少网络带宽占用和...
"Squid Cache_mem 设置指南" Squid 是一种流行的开源代理服务器软件,广泛应用于 Unix、Linux 等操作系统中。在 Squid 中,Cache_mem 是一个...正确地设置 Squid Cache_mem 大小可以提高代理服务器的性能和稳定性。
Squid Cache,通常简称为Squid,是一款广泛应用的开源代理服务器和Web缓存系统。它基于GNU通用公共许可证(GPL),允许用户免费获取、使用、修改和分发源代码。这款强大的软件旨在提高网络性能,通过在本地存储经常...
10.7.1 配置squid的cache摘要 10.8 超文本cache协议(HTCP) 10.8.1 配置Squid使用HTCP 10.9 Cache数组路由协议(CARP) 10.9.1 配置Squid使用CARP 10.10 归纳所有 10.10.1 步骤1:直接决定选项 10.10.2 ...
**Squid**是一款广泛使用的开源代理服务器软件,它主要用于缓存网页内容以提高网络性能,减轻上游服务器的负载,并增强安全性。本文将详细介绍如何在生产环境中配置和优化Squid。 ##### 1. 配置基本的Squid - **...
- **日志记录**:配置访问日志和缓存日志,如`cache_access_log /var/log/squid/access.log`和`cache_log /var/log/squid/cache.log`。 - **其他配置**:设置网页缓存日志、主机名、管理员邮箱,以及定义和控制访问...
3. **确认 Squid 配置文件中指定的用户和组**:检查 `squid.conf` 文件中的 `cache_effective_user` 和 `cache_effective_group` 设置是否正确。 ```ini cache_effective_user squid cache_effective_group squid...
10.Squid 排错如果遇到问题,查看Squid的日志文件(默认为`/var/log/squid/access.log`和`/var/log/squid/cache.log`)以获取错误信息。使用`grep`或`less`命令筛选相关错误。 总结,安装和配置Squid需要对Linux...
快速的磁盘和处理器也能提高性能,但CPU的影响不如内存和磁盘显著。 Squid是开源软件,用户可以自由使用、修改和重新发布。用户可以通过多种方式支持Squid项目,如参与用户讨论列表、测试新版本、提交bug报告、贡献...