坚信科学,分享技术

>>>尝试更加利于阅读的2014版科学院,以后都在新版上写。

Tag Archives: squid

squid缓存失效之谜:一步步提高squid缓存命中率办法记录

手里有个前端自己做cdn的服务器,结果发现进出流量相等,这是个诡异的事情,因为一般来说,做前端缓存的机器,流量基本上很长时间里都是出多进少的。 一开始的时候,是nginx做的nginx_cache,发现进出流量相等后,换上了squid 3.0,使用命令: squidclient -p 8088 mgr:info (启在8088) 发现如图所示的几个命中率,相当低下,一般的WEB服务器缓存30-60%是正常的,而CDN作用的应该说80%以上才是正常的。 刚启动squid的时候,个人认为是因为缓存文件还没有拖动到前端来,所以是正常的,但结果过了一天后,还是没有看到进流量松动。 第二天来,硬盘已经过了10G了,还是不行。通过cat access.log来看,cat access.log|gawk '{print $4}'|sort|uniq -c|sort -nr 发现TCP_MISS/200相当的多,再看流量图,进出还是没有变化。杯具。 于是乎,想到了直接tail -f access.log,看看究竟都有什么东西在访问。 一条接一条的xxx.jpg?unid=1111触动了我(公司用来做用户行为分析的参数),就这样白花花的浪费了缓存。 解决方案: 幸好,squid前面,还有一层nginx,于是考虑在nginx上做转发,将所有的xxx.jpg?xx=xx全部转到 xxx.jpg去,过滤掉url中的参数。尝试了几个不行,内置的参数$url $request_url都不可行。 只有一招利用403来跳转的可行。 location ~* (.jpg$)|(.png$)|(.gif$

Continue reading

Posted in WEB相关 | Tagged , | 6 Comments

如何让squid 2.6.STABLE21输出Content-Encoding: gzip

问题描述: 一个WEB服务器,跑nginx 0.6。前端一squid 2.6代理。用户访问先经过squid。 现需要squid服务器输出gzip压缩。 问题解决方案: 原来的nginx已经支持gzip,修改或者增加nginx.conf中内容(打开nginx的gzip支持附后): gzip_http_version 1.0; gzip_vary on; add_header Vary Accept-Encoding; 清空原来的squid对应的缓存,新缓存即是带了gzip的header。 参考文献: http://wiki.nginx.org/NginxHttpGzipModule 附录: 如何打开gzip,【优化php\nginx】 一段。

Continue reading

Posted in linux | Tagged , | Leave a comment

如何用php代码清空squid缓存下的指定文件

[文章作者:陈臻 本文版本:v1.0 最后修改:2009.3.5 转载请注明原文链接:http://www.54chen.com/c/490]     PURGE 是一个特殊的HTTP请求方法。它是Squid 的专有方法,没有在任何RFC 里定义。它让管理员能强制删除缓存对象。既然该方法有些危险,squid 默认拒绝PURGE 请求,除非你定义了ACL 引用了该方法。否则,任何能访问cache 者也许能够删除任意缓存对象。我推荐仅仅允许来自localhost 的PURGE: acl Purge method PURGE acl Localhost src 127.0.0.1 http_access allow Purge Localhost http_access deny Purge  (squid.conf摘要) 以下是使用purge删除指定文件的两个函数:     //发送socket数据 function socket_service($ip, $port='80', $out="") {  if(trim($ip)=="")return "Error: …

Continue reading

Posted in php | Tagged , | 5 Comments