php – PURGE在Varnish缓存中失败
发布时间:2020-12-13 17:42:20 所属栏目:PHP教程 来源:网络整理
导读:我使用以下代码来清理网站的主页: $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);cur
我使用以下代码来清理网站的主页:
$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. 我错过了什么吗? 谢谢 解决方法
为了消除所有其他php / curl问题,我将从最基本的低级检查开始.
这对我有用: netcat -C varnish_hostname 80 <<EOF PURGE /the/url Host: hostname EOF >用您的实际varnish主机名替换varnish_hostname. 一旦你开始工作,你知道你的VCL规则和ACL不是问题,你可以进入curl / php级别. 编辑两个说明: >您可能必须快速键入以上内容以防止连接过早关闭,因为现在许多http堆栈不允许在连接建立和HTTP请求之间存在长时间延迟以防止半开DoS攻击.您可以通过提前准备整个输入,将其复制到粘贴缓冲区,并通过单击鼠标粘贴整个blurb来实现此目的.> HTTP请求标头必须以双新行结束,如上所示. netcat -C选项用于根据HTTP协议将换行符转换为CRLF字符对. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |