首页 > 解决方案 > 页面缓存时WordPress会触发index.php吗?

问题描述

我网站上的所有页面都使用 WP Rocket 插件进行缓存,每个人都告诉我,当页面被缓存时,根index.php不会被触发。

我继续将这段代码添加到我的根 index.php 以跟踪其执行情况:

error_log( date('[ Y-m-d H:i:s ] ', $_SERVER['REQUEST_TIME'] ) . $_SERVER['REQUEST_URI'] ."\n", 3, dirname( __FILE__ ) . "/index.php.log" );

我检查了日志,确实 index.php 似乎没有在缓存页面上触发。

我不明白的是,关于 WordPress 加载顺序的在线指南说 index.php 是您访问网站时首先执行的内容。它加载 wp-blog-header.php,然后 wp-load.php 设置 WordPress 环境等。

https://medium.com/@dendefe/wordpress-loading-sequence-a-guided-tour-e077c7dbd119 https://www.mikeinmonospace.com/wordpress-internals-loading-sequence/

那么我错过了什么?为什么页面缓存时没有触发 index.php?在加载缓存页面的 index.php之前是否触发了什么?

标签: phpwordpresscaching

解决方案


在 WordPress(实际上是大多数现代 CMS)中,使用前端控制器模式,它将 CMS 的所有请求路由到单个文件,该文件通常是index.php. 但是,正如@CBroe 所说,这不是CMS 这样做,而是 Web 服务器中的规则。对于基于 Apache 的 Web 服务器,它位于.htaccess文件中,对于 IIS,它可能是一个web.config文件,而对于 Nginx,它可能位于其中一个服务器指令中。

当使用缓存解决方案时,它们通常还会将规则注入 Web 服务器,但CMS 的规则之前,这意味着它index.php不再是第一个并且因此是默认规则。


推荐阅读