脚本宝典收集整理的这篇文章主要介绍了php – PURGE在Varnish缓存中失败,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
$ch = curl_init(); curl_setopt($ch,CURLOPT_URL,"http://www.mysITe.COM:8080/"); curl_setopt($ch,CURLOPT_HEADER,1); curl_setopt($ch,CURLOPT_CUSTOMREQUEST,"purge"); curl_setopt($ch,CURLOPT_RETURNtransfer,true); curl_setopt($ch,CURLOPT_NOBODY,CURLOPT_CONNECTTIMEOUT_MS,1000); $r = curl_exec($ch); echo "<PRE>$r</PRE>"; curl_close($ch);
VARnish的回应如预期:
HTTP/1.1 200 Purged. Server: Varnish Content-tyPE: text/htML; charset=utf-8 Retry-After: 5 Content-Length: 382 Accept-Ranges: bytes Date: Fri,10 Aug 2012 10:50:56 GMT X-Varnish: 617777456 Age: 0 Via: 1.1 varnish Connection: close X-Cache: MISS
所以现在我认为它已被清除,但是进一步调用页面检查标题表明它没有被清除.由于Age:15和X-Cache:HIT都已设置,表明该页面仍然被缓存并且是15秒.
TTL是120.
我错过了什么吗?
谢谢
可靠的人
这对我有用:
netcat -C varnish_hostname 80 <<EOF PURGE /the/url Host: hostname EOF
>用您的实际varnish主机名替换varnish_hostname.
>通过实际端口清除侦听替换80.
>将/ url替换为url的路径部分以进行清除
>将主机名替换为要清除的URL中的主机名部分.
一旦你开始工作,你知道你的VCL规则和ACL不是问题,你可以进入curl / PHP级别.
编辑两个说明:
>您可能必须快速键入以上内容以防止连接过早关闭,因为现在许多http堆栈不允许在连接建立和HTTP请求之间存在长时间延迟以防止半开DOS攻击.您可以通过提前准备整个输入,将其复制到粘贴缓冲区,并通过单击鼠标粘贴整个blurb来实现此目的.> HTTP请求标头必须以双新行结束,如上所示. netcat -C选项用于根据HTTP协议将换行符转换为CRLF字符对.
以上是脚本宝典为你收集整理的php – PURGE在Varnish缓存中失败全部内容,希望文章能够帮你解决php – PURGE在Varnish缓存中失败所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。