php – PURGE在Varnish缓存中失败

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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.

我错过了什么吗?

谢谢
可靠的人

解决方法

为了消除所有其他PHP / curl问题,我将从最基本的低级检查开始.

这对我有用:

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,请注明来意。