PHP生成json文件并禁用缓存

时间:2016-05-22 11:50:45

标签: php json caching

我有一个脚本,每次上传我的应用程序的新版本时都会创建一个新的json文件。

问题是浏览器和移动应用似乎缓存了json文件。

我使用h创建该json文件。

当有人从外面读取时,是否有办法专门为该json文件禁用缓存?

EDIT1: 回答这个问题,假设我无法改变我的客户

2 个答案:

答案 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或者像保罗提出的那样,更容易。