2017-02-26 5 views
0

JSONファイルから項目を追加したり削除したりするためのアプリケーションを構築しています。 次の問題が発生しました:アイテムを削除するとフロントエンドに反映されます(アイテムは消えます)。ハード・ページの再ロードが2回あります。キャッシュされたものの代わりにPHPファイル。AngularJSでのキャッシュと更新されたJSONファイルの処理

一度だけリロードすると、変更が反映されていないJSONファイルがキャッシュに読み込まれます。

この問題をAngularJSで直接処理する方法はありますか?

$scope.remove = function(array, index){ 
    if($scope.totsselected){ 
     array.splice(index, 1); 
     $http.post("deleteall.php", { 
      data : array 
     }) 
     .then(function(data, status, headers, config) { 
     $http.get('data/all.json') 
      .then(function (response) { 
       $scope.productesgenerals = response.data; 
       console.log($scope.productesgenerals); 
      }).catch(function (error) { 
     }); 
     }); 
    } 
)}; 

そして、私のPHPコード:

はここに私の角度コードです

<?php 

$contentType = explode(';', $_SERVER['CONTENT_TYPE']); 

$rawBody = file_get_contents("php://input"); // Read body 
$data = json_decode($rawBody); // Then decode it 
$all = $data->data; 

$jsonData = json_encode($all); 
file_put_contents('data/all.json', $jsonData); 
?> 

答えて

1

あなたは$ HTTPキャッシュがオンになっているようですね。この要求のためにそれを無効にしてみてくださいそれが動作しない場合は

$http.get('data/all.json', {cache: false}) 

https://docs.angularjs.org/api/ng/service/ $ HTTP#(それがまだキャッシュされている)

をキャッシュする、それは、サーバー側のキャッシュのように聞こえます。あなたはユニークなクエリ文字列を送ることでこれを破ることができます。

$http.get('data/all.json?_=' + Date.now(), {cache: false}) 

これにより、各要求は一意の要求になり、サーバー側のキャッシュを防止する必要があります。

キャッシングを無視しているため、キャッシングのパフォーマンス上のメリットがすべて失われます。

関連する問題