如何在ionic 3应用程序中禁用请求缓存或添加刷新? [英] How to disable request caching or add refresh in ionic 3 app?
问题描述
我的离子应用程序遇到了麻烦: 在ionViewWillEnter()上,我向服务器请求GET请求以获取数据. 如果我是第一次打开该页面,则发送请求. 如果是第二次开放,则应用读取缓存并不发送请求. 此故障仅在设备上存在. 任何的想法 ? 谢谢.
I have a trouble with my ionic app : on ionViewWillEnter() I request the server with a GET request to get datas. If I open the page for the first time, the request is sent. If it's a second opening, app read the cache and doesn't send request. This trouble exists only on device. Any idea ? Thx.
我正在使用这个版本:
@ ionic/app-scripts:3.2.0
Cordova平台:iOS 4.5.5
离子框架:离子角3.9.2
EDIT :
I'm using this version :
@ionic/app-scripts : 3.2.0
Cordova Platforms : ios 4.5.5
Ionic Framework : ionic-angular 3.9.2
所有请求都进入拦截器:
All requests go into an interceptor :
import { Injectable, NgModule} from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpHeaders} from '@angular/common/http';
import {Globals} from './globals';
@Injectable()
export class HttpsRequestInterceptor implements HttpInterceptor {
headers : HttpHeaders;
constructor(private globals: Globals){}
intercept(
req: HttpRequest<any>,
next: HttpHandler): Observable<HttpEvent<any>> {
if(localStorage.getItem('jwt')){
this.headers = new HttpHeaders({'Authentication':localStorage.getItem('jwt'),'Cache-Control':['no-cache','no-store'],'Pragma':'no-cache','Expires': '0'});
}else{
this.headers = new HttpHeaders({'Authentication':''});
}
const dupReq = req.clone({ headers: this.headers });
return next.handle(dupReq);
}
};
我在服务器上启用了所有CORS.
I have all CORS enabled on my server.
在我的控制器中,我这样做:
In my controller I do this :
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams,LoadingController } from 'ionic-angular';
import {UserService} from '../../providers/user-service';
import {AlertService} from '../../providers/alert-service';
import { TranslateService } from '../../app/translate';
@IonicPage()
@Component({
selector: 'page-user-messages',
templateUrl: 'user-messages.html',
})
export class UserMessagesPage {
messagesList;
constructor(public navCtrl: NavController, public navParams: NavParams,public translateService:TranslateService,
public alertService : AlertService, private userService : UserService,public loadingCtrl: LoadingController) {
}
/**
* Show user's messages
**/
ionViewWillEnter() {
let loader = this.loadingCtrl.create({
content: this.translateService.instant('text','loadingText'),
});
loader.present().then(() => {
this.userService.getMyMessages().subscribe(jsonResponse=>{
if(jsonResponse.success==true){
this.messagesList = jsonResponse.rows;
}else{
this.alertService.showAlert(this.translateService.instant('error','title'),jsonResponse.msg);
}
loader.dismiss();
},error => {
this.alertService.showAlert(this.translateService.instant('error','title'),error);
loader.dismiss();
});
});
}
}
最后,提供者是:
import { Injectable } from '@angular/core';
import { HttpClient,HttpParams } from '@angular/common/http';
import { Globals} from '../app/globals';
import 'rxjs/add/operator/map';
import {Observable} from 'rxjs/Observable';
import {User} from '../app/models/user';
import {JsonResponse} from '../app/models/json-response';
@Injectable()
export class UserService {
constructor(private httpClient : HttpClient, private globals: Globals){}
public getMyMessages() : Observable<any>{
return this.httpClient.get("myurl");
}
}
推荐答案
因此,我终于找到了一个解决方案: 在您的.htaccess中设置像这样的Cache Control的标题
So, I finally found a solution : in your .htaccess set the header for Cache Control like this
Header set Cache-Control "private, s-maxage=0, max-age=0, max-age=0, must-revalidate"
这篇关于如何在ionic 3应用程序中禁用请求缓存或添加刷新?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!