如何关闭服务器和浏览器上 PHP 页面的缓存?

How to Turn off Caching of PHP Pages on Server and Browser?

我不确定 php 页面的缓存来自哪里。到目前为止,我已经禁用了缓存;

Chrome 的开发者工具 > 网络 > 禁用缓存;

Debian 的 \opt\php73\etc\php73.ini 与;

 opcache.enable=0
 opcache.enable_cli=0

我已经添加到我的服务器条目的末尾;

fastcgi_cache_bypass $is_args;
  fastcgi_no_cache $is_args;

我在 php 脚本的顶部得到了这个 header;

 header("Cache-Control: no-cache");

但我还是搞不懂缓存是从哪里来的。

有人可以推荐我可能会去的其他地方吗?

如果您尝试使用 PHP 停止缓存您的网页,我使用以下代码

//Minimize caching so admin area always displays latest statistics
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

虽然没有什么是真正完整的证据,因为许多 CSS 和其他 JS 文件是独立于 PHP 缓存的,并且在更新后需要刷新才能显示,但还有其他方法可以解决这个问题。

我使用的一个示例是对文件进行哈希处理(使用 php):

$specific_page = '/assets/javascripts/pages/javascript.js';
if(file_exists($specific_page)) {
    $html .= '<script src="'.$specific_page.'?v='.hash_file('crc32',$specific_page).'"></script>';
}

这将保留缓存的文件,直到文件被更改。当文件更改时,它会更改哈希值,因此会找到新的更新文件(因为 URL 在技术上已更改)。

同样,没有什么能真正充分证明在客户端防止缓存。