Php Wordpress-刷新\重写\规则太慢?

Php Wordpress-刷新\重写\规则太慢?,php,wordpress,performance,wordpress-hook,Php,Wordpress,Performance,Wordpress Hook,我管理的一个Wordpress网站偶尔会出现一个问题,所有的帖子/页面/等等都会转到404。像这样刷新永久链接每次都会解决问题,用户永远看不到404: add_action('template_redirect', 'flush_rewrite_rules_on_404'); function flush_rewrite_rules_on_404() { if( is_404() ) { flush_rewrite_rules(); } } 我的日志显示刷新会在

我管理的一个Wordpress网站偶尔会出现一个问题,所有的帖子/页面/等等都会转到404。像这样刷新永久链接每次都会解决问题,用户永远看不到404:

add_action('template_redirect', 'flush_rewrite_rules_on_404');
function flush_rewrite_rules_on_404() {
    if( is_404() ) {
        flush_rewrite_rules();
    }
}
我的日志显示刷新会在页面上运行,也会针对页面上的每个图像运行

如果用户访问一个不存在的URL(例如www.mywebsite.com/mispelled uri),刷新仍然会发生。如果我想限制刷新,使其仅出现在404的合法页面上(例如,检查REQUEST_URI中的有效术语slug和post_名称),那么我需要刷新页面1-3次,以使代码运行,并使404消失,而不是获得我从上述代码示例中获得的无缝性能

为什么仅仅通过在IF()块中添加一个额外的检查,就会出现如此严重的性能问题

我如何解决这个问题


(我们已经花了几天的时间来解决最初的bug;我们已经看到所有页面上都说“您是否更新/安装/卸载了插件?主题?从备份中恢复数据库?”这些都不是问题,当有其他事情要做时,客户不愿意在这方面花费更多时间)

如果您拥有的合法重写规则丢失,那么这些规则肯定存在固有缺陷。您的规则必须始终定义为预期被另一个进程刷新,或者您必须编写钩子以预期被刷新的规则,以便重新注册您自己的规则(如果需要定义这些规则)(例如,从数据库查找)。我想不出一个有效的场景需要404页面上的
flush\u rewrite\u rules()