• 彼得

    (@皮特-1)


    截至上次更新(2.1.5),我们的调试日志中充满了以下消息:

    [2020年11月24日17:46:27 UTC]Servebolt Optimizer试图设置标头“Cache-Control:max-age=0,no-Cache,s-maxage=0”,但标头已发送。
    [2020年11月24日17:46:27 UTC]Servebolt Optimizer试图设置标题“Pragma:no-cache”,但标题已发送。
    [2020年11月24日17:46:27 UTC]Servebolt Optimizer试图设置标头“X-Servebolt-Plugin:active”,但标头已发送。
    [2020年11月24日17:46:27 UTC]Servebolt Optimizer试图设置标题“cf-edge-cache:no-cache,platform=wordpress”,但标题已发送。
    [2020年11月24日17:46:27 UTC]Servebolt Optimizer尝试设置标头“No-cache-trigger:1”,但标头已发送。

    我们网站上的一切都是最新的。

查看2个回复-1至2(共2个)
  • 插件支持 彼得

    (@wizzard_)

    嗨,彼得!

    通常这种行为不应该发生。你在我们的插件上使用什么设置?你能在禁用所有其他插件时检查问题是否仍然存在吗?

    罗伯特·斯韦博特

    (@robertservebolt)

    你好!不幸的是,这是我们插件中的一个长期存在的错误,它与PHP缓冲区大小有关,通常是由插件在加载过程中过早发送输出引起的。一些网站体验到了这一点,而另一些则没有——这一切都归结为网站的复杂设置。让我试着解释一下:

    我们在WP加载周期中很晚才设置缓存头,这是因为我们需要解析当前的帖子,以查看是否应该真正缓存它。不幸的是,一些插件/主题在加载过程的早期就输出了数据——可以是空白、标记或错误消息中的任何内容。在许多情况下,此输出将超过PHP缓冲区大小,这再次导致提前发送头,因为头将是HTTP响应的第一部分。这再次导致我们行动太晚,然后无法设置正确的缓存标头。

    不幸的是,调试起来有点棘手。一种解决方案是增加PHP缓冲区大小,但最好的解决方案是在WP开始打印实际的模板标记之前找出导致此输出的原因。一种方法是逐个停用插件,看看“headers already sent”消息何时消失。如果插件停用后错误仍然存在,我会在其他地方检查,可能是主题、mu-plugins,甚至可能尝试重新安装WordPress。我希望这能有所帮助,我衷心希望我们能有一个更好的解决方案,但WordPress的结构方式让它有点困难。

    谨致问候
    Servebolt的Robert

查看2个回复-1至2(共2个)
  • 主题“PHP Warnings in debug.log–tempted to set header”对新回复关闭。