为了避免 PHP readfile()
函数导致的缓存问题,您可以使用以下方法:
-
文件系统缓存控制:
通过设置 HTTP 响应头中的
Cache-Control
和Expires
字段,您可以控制浏览器和代理服务器如何缓存文件。例如,您可以将文件设置为不缓存:header('Cache-Control: no-store, no-cache, must-revalidate'); header('Expires: 0');
这将确保浏览器不会缓存
readfile()
读取的文件。 -
文件内容的时间戳:
您可以在输出的 HTML 中添加一个时间戳参数,以确保浏览器总是请求文件的最新版本。例如:
$file = 'path/to/your/file.html'; $mtime = filemtime($file); header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $mtime) . ' GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Expires: 0'); readfile($file);
这将告诉浏览器在文件内容发生更改时请求新版本。
-
使用
readfile()
的替代方法:如果您需要更多的控制,可以考虑使用
file_get_contents()
函数代替readfile()
。file_get_contents()
函数提供了更多的选项,例如设置超时和错误处理。此外,它不会受到 PHP 设置中的默认max_execution_time
和memory_limit
的限制。例如:$file = 'path/to/your/file.html'; $content = file_get_contents($file); echo $content;
通过使用这些方法,您可以避免 PHP readfile()
函数导致的缓存问题。