要让 Nginx 不对 PHP 文件进行缓存,可以通过以下几种方式实现:
location ~ \.php$ {
# 其他 PHP 相关配置...
# 禁用缓存
add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires 0;
}
在 PHP 文件中直接设置 HTTP 头:
<?php
header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");
// 其他 PHP 代码...
?>
location ~* \.(php|html)$ {
expires -1;
add_header Cache-Control "no-store, no-cache, must-revalidate, max-age=0";
add_header Pragma "no-cache";
}
location ~ \.php$ {
fastcgi_no_cache 1;
fastcgi_cache_bypass 1;
# 其他 FastCGI 配置...
}
修改 Nginx 配置后需要重新加载配置:
sudo nginx -s reload
这些设置会完全禁用浏览器和代理服务器的缓存,可能会增加服务器负载。
对于开发环境,禁用缓存很有用;但对于生产环境,建议对静态资源保持适当缓存,只对动态内容禁用缓存。
如果使用 FastCGI 缓存,还需要禁用相应的缓存机制。
您可以根据实际需求选择最适合的方法来配置 Nginx 不缓存 PHP 文件。