Я хочу кэшировать (используя sessionStorage) ответ HTTP, который я получаю от rxjs. если один и тот же запрос (URL) вызывает еще раз, я хотел использовать sessionStorage вместо получения его обратно с сервера.Угловой 2 кэш http-ответ на sessionStorage
Im сохраняет URL как ключ для sessionStorage и ответ сервера как значение.
Im начинающий как для концепции Angular2, Rxjs, так и для Observer хотел знать, насколько масштабируемым этот подход.
private setLoginData():void{
this.loginDataObserver().subscribe(
(data:any)=>{
let loginData:LoginUser={
id : data.employee.id,
name : data.employee.first_name+' '+data.employee.last_name,
jobTitle : data.employee.job_title,
company : data.profile.name,
avatar : data.employee.avatar,
role : data.role
}
}
);
}
private loginDataObserver(){
let options = new RequestOptions({headers: new Headers({'Content-Type': 'application/json'})});
let params: URLSearchParams = new URLSearchParams();
params.set('token',this.cookie.get('token'));
options.search=params;
if(sessionStorage.getItem(this.dataUrl+this.cookie.get('userId'))!=null){
let cacheJson=JSON.parse(sessionStorage.getItem(this.dataUrl+this.cookie.get('userId')));
let cacheDataProvider : BehaviorSubject<any> = new BehaviorSubject<any>(cacheJson);
let cacheObserver:Observable<any>=cacheDataProvider.asObservable();
return cacheObserver;
}
return this.http.get(this.dataUrl,options).
do((res:Response) => sessionStorage.setItem(this.dataUrl,JSON.stringify(res.json()))).
map((res:Response) => res.json()).
catch(this.handleError)
}
Я планирую усилить это как сервис Anguler2 с методами для разрешения кэша,
Я новичок в RxJx я буду смотреть эту идею вы отправили :) спасибо –
Я бы рекомендовал прочитать здесь http://reactivex.io/rxjs/manual/overview.html, чтобы лучше понять концепции –