我有一个脚本,每次上传我的应用程序的新版本时都会创建一个新的json文件。
问题是浏览器和移动应用似乎缓存了json文件。
我使用h
创建该json文件。
当有人从外面读取时,是否有办法专门为该json文件禁用缓存?
EDIT1: 回答这个问题,假设我无法改变我的客户
答案 0 :(得分:1)
伪代码,
原始JSON文件:
{
"param":"value",
"param1" "value",
... etc..
}
JSON.PHP文件
<?php
$thatMuch = (60 * 60 * 24); // 24hrs
$cacheTime = (time() + $thatMuch);
$json = file_get_contents($originalJsonFile);
header('Pragma: public');
header('Cache-Control: maxage='.$thatMuch);
header('Expires: ' . gmdate('D, d M Y H:i:s', $cacheTime) . ' GMT');
header('Content-Type: application/json; charset=utf-8');
echo($json);
exit;
如果按原样输出JSON,那么file_get_contents就可以了,否则,你可以做你需要做的事情..使用json_encode(),将最后一个header指令改为别的等等。
另外,您可以*(如果您还没有这样做)已经通过.htaccess
删除.php扩展名查找,这样路径中就不需要.php了,因此,原始路径/网址将会保持完全相同。
像这样*(root dir .htaccess)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ /$1.php [QSA,L]
</IfModule>
这就足够了我猜...
答案 1 :(得分:0)
您如何向最终用户提供该文件?你直接服务该文件吗?如果你这样做,尝试通过/通过PHP提供该JSON文件,在输出之前使用正确的标题,其中filename.json.php
代替filename.json
或者像保罗提出的那样,更容易。