我有一个版本化的Angular应用程序。有时,用户会获取与应用程序的旧版本相对应的index.html
文件,因此,在尝试加载其他JavaScript,css等块时会导致错误。
由于我记录了每个版本号,因此我想在应用程序启动时将其与上一个版本号进行比较,因此,如果它们不匹配(用户使用较旧的版本),我将强制刷新,以便用户将获得最新版本。
但是,如果出现问题,恐怕这将失去控制并导致刷新循环。我考虑过要在本地存储中保存一个变量,以指示该变量是否已尝试刷新,而不要重试。
async checkVersion() {
if (isPlatformBrowser(this.platformId)) {
try {
const json = await this.http.get(`${environment.domain}/assets/version.json?${new Date(Date.now()).getTime()}`).map(res => res.json()).share().toPromise();
const latestVersion = json.version;
const currentVersion = environment.version;
this.localStorageService.setItem('currentVersion', currentVersion);
if (latestVersion !== currentVersion) {
// Safely refresh
}
} catch (e) {
console.error(e);
}
}
}
强制刷新和防止循环的最安全方法是什么?