考虑在VPS Web服务器上安装Varnish Cache,但想知道如果php代码需要调试可能会导致什么问题。过去,我发现缓存系统使调试更加困难,因为网页的缓存版本不会在代码更改后立即更改。理想情况下,调试必须全部在测试站点上完成,但是有时有必要在生产版本上进行调试。
是否可以在调试时临时关闭单个域或整个服务器的Varnish Cache?
最佳答案
在生产环境上不应进行任何开发或进行很少的开发,但实际上,有时您需要对现场站点中的问题进行故障排除。
Varnish使得查看页面的特定请求失败的原因有些麻烦:它将用自己的“后端提取失败”错误掩盖致命的PHP错误。这使您的PHP代码出现问题的迹象变得不那么明显,并让您立即归咎于Varnish。
您可以通过将所有请求直接传递到已配置的后端来暂时使Varnish通过其缓存。这样,在调试PHP代码方面,它的工作原理完全相同(好像Varnish实际不在其中!)。我的步骤是:
sub vcl_recv {
之后立即放置一行return (pipe);
service varnish reload
或systemctl reload varnish
重新加载您的Varnish配置(取决于您的Linux发行版)。 要返回到缓存(生产设置),请删除该行,然后再次重新加载Varnish。执行这些步骤时,无需停机。
关于在运行 Varnish Cache 的服务器上调试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48239772/