2017-10-23 17 views
1

からファイルを読み込むのfile_get_contents()力私はJSONファイルからの私の定数を読み込むしようとしていますPHP:サーバーの代わりに、キャッシュ

$const = file_get_contents('/myfolder/const.json'); 

を使用しては問題が、これは常にキャッシュからではなく、私からファイルを読み込みますですローカルのXAMPPサーバー。開発段階では、このファイルは編集のために動的なので、ファイルに変更があるたびにブラウザのキャッシュをクリアしてしまいます。どのようにサーバーから常に読み込むように強制することができますか(開発段階でこれを行う際の待ち時間は問題ありません。どんな助けもありがとうございます。

+0

ファイルパス全体を指定しないのはなぜですか? https://stackoverflow.com/questions/13243177/reading-a-file-in-a-different-directory-php – sissy

答えて

2

に更新されます行うことができ、「受け入れ」の解決策がいくつかあります。

最初は、私は、これらのいずれかを追加し、あなたのキャッシュをクリアしてから実行しようと提案します。また、この

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"); 

を試すことができます

$const = file_get_contents('/myfolder/const.json?'.date("Ymdhis")); 

のようにファイルにタイムスタンプを追加することですコード。ファイルにタイムスタンプを追加すると、私が気づいてからページを読み直す前に、私が追加したときにうまくいきました。

+0

あなたのソリューションは、毎回キャッシュを無効にするようブラウザに強制します。 – Tarun

+0

ありがとう@thomasw_lrd。 –

1

あなたは毎回ファイルキャッシュを無効にするために、次のこと

$filePath = "/myfolder/const.json"; 
$const = file_get_contents($filePath."?k=".filemtime($filePath)); 
0

ApacheやNginxのような標準的なWebサーバーを実行している場合は、Cache-Controlというヘッダーをブラウザに送信することをお勧めします。

$context = [ 
    'http' => [ 
     'header' => "Cache-Control: no-cache\r\n" . 
      "Pragma: no-cache\r\n" 
    ] 
]; 

そして最後に、要求:

ので、file_get_contentsのためにあなたのようなコンテキストリソースを作成する必要があると思います。また

$file = file_get_contents('/myfolder/const.json', false, $context); 

を、それはおそらくではありませんサーバーが提供するchrootに依存することをお勧めします。むしろ、ファイルへの絶対パスを__DIR__ . /myfolder/const.jsonで指定すると、キャッシュの無効化を伴うすべての苦痛に対処する必要はありません。または、http:// . $_SERVER['SERVER_ADDR'] . '/myfolder/const.jsonのようなものを使用すると、すべてのキャッシュPITAに対処する必要があります。

関連する問題