2017-01-30 1 views
0

시나리오는 사용자가 몇 가지 사항을 말하면 10pt가됩니다. 그래서 버튼을 클릭 한 후 ajax get 호출은 사용자가 사용하는 포인트를 업데이트하는 서버로 보내집니다. 따라서 서버는 Internet Explorer를 제외한 모든 브라우저에서 작동하는 9를 보내야합니다. 검색 후 IE는 요청을 캐시하지 않는다는 것을 알았습니다. 이 문제를 해결하는 방법?인터넷 익스플로러가 angular2 형식의 AJAX 요청을 캐싱하지 못하도록하는 방법은 무엇입니까?

고맙습니다!

답변

3

서버 코드를 제어 할 수있는 경우 캐싱을 허용하지 않는 적절한 헤더를 설정해야합니다.

설정할 수있는 헤더

Cache-Control: no-cache 
Expires: -1 
1

가능한 방법은 HTTP 인터셉터를 구현하고 URL이 포함 된 요청이 이미 실행 된 경우 타임 스탬프를 추가하는 것입니다.

@Injectable() 
export class CustomHttp extends Http { 
    urls: {string:string} = {}; 

    get(url: string, options?: RequestOptionsArgs): Observable<Response> { 
    if (this.urls[url]) { 
     options = options || {}; 
     options.search = options.search || new URLSearchParams(); 
     options.search.set('timestamp', (new Date()).getTime()); 
    } 

    return super.get(url, options).do(() => { 
     this.urls[url] = true; 
    }); 
    } 
} 
관련 문제