我正在尝试使用
从JSON文件中读取常量$const = file_get_contents('/myfolder/const.json');
问题是这将始终从缓存中读取文件,而不是从本地XAMPP服务器读取。在开发阶段,由于编辑,此文件是动态的,每当文件发生更改时,我最终都会清除浏览器缓存。我怎么能强制总是从服务器读取(在开发阶段这样做的延迟很好。我将切换到正常的部署后 - 如何?)?任何帮助表示赞赏。
答案 0 :(得分:3)
有几个"被接受"的解决方案。
第一种是向文件添加时间戳,如
$const = file_get_contents('/myfolder/const.json?'.date("Ymdhis"));
你也可以尝试这个
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
我建议添加其中一个,清除缓存然后尝试运行代码。在我开始编写和重新加载页面之前添加它时,为文件添加时间戳对我有用。
答案 1 :(得分:1)
每次文件更新时,您都可以执行以下操作使缓存无效
import * as svgPanZoomImport from 'svg-pan-zoom';
const svgPanZoom = svgPanZoomImport;
svgPanZoom(element);
答案 2 :(得分:0)
如果您正在运行像Apache或Nginx这样的标准网络服务器,最好的办法就是发送一个Cache-Control
标题,就像浏览器所做的那样。
因此,对于file_get_contents
,您需要创建一个上下文资源,如:
$context = [
'http' => [
'header' => "Cache-Control: no-cache\r\n" .
"Pragma: no-cache\r\n"
]
];
最后,请求:
$file = file_get_contents('/myfolder/const.json', false, $context);
此外,依赖服务器提供的chroot可能不是一个好主意。而是通过__DIR__ . /myfolder/const.json
提供文件的绝对路径,这不会使您必须处理缓存失效的所有痛苦。或者,使用类似http:// . $_SERVER['SERVER_ADDR'] . '/myfolder/const.json
的内容,这将再次使您必须处理所有缓存PITA。