AngularJS IE $http caching issue

북마크 추가

     


internet explorer 에서 get방식으로 $http 호출시 기본 cache 가 true 이기 때문에

같은 주소를 두번이상 호출하게 되면 컨트롤러로 들어가지 않는다.

예를 들면 첫번째 $http에서 데이터를 가져오고 두번째 $http로 데이터중 한가지 값을 바꾸고

다시 첫번째 $http를 호출하게 되면 변경된 데이터가 출력되는것이 아니라 cache되어있는

구 데이터가 그대로 출력되는 문제가 발생

 


해결 방법

 


첫 번째로는 모듈 설정을 통해 cache를 false로 바꿔주는 것이다.

 


var myApp = angular.module('myApp', ['ngRoute']);

 

myApp.config(['$routeProvider', '$httpProvider', function($routeProvider, $httpProvider) {

    $httpProvider.defaults.cache = false;

    if (!$httpProvider.defaults.headers.get) {

      $httpProvider.defaults.headers.get = {};

    }

    // disable IE ajax request caching

    $httpProvider.defaults.headers.get['If-Modified-Since'] = '0';

    //.....here proceed with your routes

}]);

 


두 번째 해결 방법은 GET방식 대신 POST방식을 사용하면 된다.

 


위의 caching issue는 익스플로러에서만 해당하는 issue

HKH
2014-08-29 17:06
SHARE
keyboard_arrow_left
keyboard_arrow_up