加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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.
>通过实际端口清除侦听替换80.
>将/ url替换为url的路径部分以进行清除
>将主机名替换为要清除的URL中的主机名部分.

一旦你开始工作,你知道你的VCL规则和ACL不是问题,你可以进入curl / php级别.

编辑两个说明:

>您可能必须快速键入以上内容以防止连接过早关闭,因为现在许多http堆栈不允许在连接建立和HTTP请求之间存在长时间延迟以防止半开DoS攻击.您可以通过提前准备整个输入,将其复制到粘贴缓冲区,并通过单击鼠标粘贴整个blurb来实现此目的.> HTTP请求标头必须以双新行结束,如上所示. netcat -C选项用于根据HTTP协议将换行符转换为CRLF字符对.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读