如何在特定时间缓存获取请求?

问题描述

如何使用Angular HttpInterceptor缓存一段时间的获取请求?我想在进入服务器之前从缓存中获取响应。

例如:

  1. 第一个请求从服务器获取数据

  2. 将响应缓存60秒

  3. 第二个请求从缓存中获取数据

  4. 如果第三个请求在60秒后从服务器获取数据,否则从缓存中获取数据

    @Injectable()
    export class JwtInterceptor implements HttpInterceptor {
      userDetails: any;
      constructor(public router: Router) { }
    
      intercept(
        request: HttpRequest<any>,next: HttpHandler
      ): Observable<HttpEvent<any>> {
    
        if (!request.url.includes('auth/login') && this.userDetails) {
          // TODO: If no internet connectivity logout from the session
          // For multi tenancy tenant ID is in auth token so no need to pass extra param just pass auth token
          request = request.clone({
            setHeaders: {
              'x-access-token': CommonUtils.getCookie('token')
            }
          });
        }
    
        return next.handle(request).pipe(
          map((event: HttpEvent<any>) => {
            return event;
          }),catchError((error: HttpErrorResponse) => {
            let data = {};
            data = {
              reason: error ? error : '',status: error.status
            };
            return throwError(error);
          })
        );
      }
    }
    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)