在解决Angular 6+缓存问题时,可以使用以下方法之一:
"configurations": {
"production": {
"outputHashing": "all"
}
}
const express = require('express');
const app = express();
app.use(express.static('dist/my-app', {
maxAge: '1d', // 缓存1天
etag: false // 禁用ETag
}));
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable()
export class CacheInterceptor implements HttpInterceptor {
intercept(request: HttpRequest, next: HttpHandler): Observable> {
const modifiedRequest = request.clone({
url: request.url + '?cache=' + new Date().getTime() // 添加时间戳作为唯一标识符
});
return next.handle(modifiedRequest);
}
}
要使用该拦截器,需要将其提供给Angular的HTTP Client。可以在根模块中的providers数组中提供它:
import { NgModule } from '@angular/core';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { CacheInterceptor } from './cache.interceptor';
@NgModule({
imports: [HttpClientModule],
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: CacheInterceptor, multi: true }
]
})
export class AppModule { }
这些是解决Angular 6+缓存问题的一些常见方法,可以根据具体情况选择适合的方法。