我有一个restendpoint,它在GET调用时返回一个列表。我还有一个POSTendpoint来添加新项目,还有一个DELETEendpoint来删除它们。这在Firefox和Chrome中有效,在IE11中发布和删除也有效。然而,GET-in-IE11只在页面的初始加载时起作用。刷新将返回缓存的数据。我在Angular 1中看到过关于这种行为的帖子,但在Angular 2(发布候选1)中没有看到。
转发$超文本传输协议的stackoverflow响应Angular IE缓存问题,您应该向每个GET请求添加标题Pragma、no-ache、If-Modified-自。
拦截器的场景不再支持角2。因此,您应该扩展超文本传输协议,就像这里描述的那样。
Angular 4.3现在包括支持拦截器的HttpClient服务。
今天,我也有这个问题,(该死的IE)。在我的项目中,我使用的是httpclient
,它没有BaseRequestOptions
。我们应该使用Http_拦截器来解决它!
import { HttpHandler,
HttpProgressEvent,
HttpInterceptor,
HttpSentEvent,
HttpHeaderResponse,
HttpUserEvent,
HttpRequest,
HttpResponse } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
export class CustomHttpInterceptorService implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler):
Observable<HttpSentEvent | HttpHeaderResponse | HttpProgressEvent | HttpResponse<any> | HttpUserEvent<any>> {
const nextReq = req.clone({
headers: req.headers.set('Cache-Control', 'no-cache')
.set('Pragma', 'no-cache')
.set('Expires', 'Sat, 01 Jan 2000 00:00:00 GMT')
.set('If-Modified-Since', '0')
});
return next.handle(nextReq);
}
}
模块提供
@NgModule({
...
providers: [
...
{ provide: HTTP_INTERCEPTORS, useClass: CustomHttpInterceptorService, multi: true }
]
})
对于Angular 2及更高版本,通过覆盖RequestOptions
添加无缓存头的最简单方法是:
import { Injectable } from '@angular/core';
import { BaseRequestOptions, Headers } from '@angular/http';
@Injectable()
export class CustomRequestOptions extends BaseRequestOptions {
headers = new Headers({
'Cache-Control': 'no-cache',
'Pragma': 'no-cache',
'Expires': 'Sat, 01 Jan 2000 00:00:00 GMT'
});
}
模块:
@NgModule({
...
providers: [
...
{ provide: RequestOptions, useClass: CustomRequestOptions }
]
})
我发现了与jQuery相关的类似问题。我的目标是找出如何防止jQueryMobile和PhoneGap中的缓存(我使用JSONP)。我正在进行一些ajax调用,动态地填充listview。我想在每次初始化页面(pageinit)时查询web服务。在我的android设备上,在新的查询之后,每次我进入页面时,数据都会添加到listview中。它不会删除,每次我访问页面时,我都会添加一个副本。我认为这
问题内容: 好像我使用加载动态内容,结果缓存在浏览器中。 在QueryString中添加一些随机字符串似乎可以解决此问题(我使用),但这听起来像是一种hack。 还有其他方法可以做到这一点吗?或者,如果唯一字符串是实现此目标的唯一方法,则除之外还有其他建议吗? 问题答案: 我使用,这将避免冲突,除非您在同一毫秒内发生多个请求: 编辑: 这个答案已经好几年了。它仍然有效(因此我没有删除它),但是 现
问题内容: 我正在使用PHP开发一个简单的网站。 开发配置: WAMP 生产配置: LAMP 在测试时,我更改了CSS文件,但是当我重新加载页面时,我的浏览器(不确定)仍使用旧的缓存CSS。 我进行了一些谷歌搜索,发现了已经尝试过的其他解决方案 在CSS末尾附加查询 使用(在Firefox中)强制获取资源 禁用Firefox缓存以及使用Firefox加载项。 当这些都不起作用时,我做了更多的谷歌搜
我有一个ASP.NET MVC 5应用程序。该应用程序通过WEB API WEB服务请求记录。WEB API回调到以JSON格式返回结果的exctetion方法。我无法证明这一点,但我担心我的数据可能会被缓存。 是否有一个属性可以放在操作上,以确保数据不会被缓存?如果没有,如何确保浏览器每次都获得一组新记录,而不是缓存的记录? 我把下面的属性放在操作上,以确保数据不会被缓存,但在插入数据后不会正常
问题内容: 我已经编写了一个Linux驱动程序,该驱动程序ioremaps将特定设备的PCI BAR0导出为sysfs二进制属性,允许用户空间直接控制它。 当我尝试在属性顶部使用MMAP来直接访问该位内存(从Userland程序)时,问题就浮现了。读取可以很好地完成并返回期望值,尽管当我写入该内存时,它似乎被缓存在内核和内存之间的某个地方,而不是传递给GMCH根联合体(以及设备)。我想做的是每
我有从我的网页生成的AJAX POST请求,可能有多个POST请求具有相同的POST数据。但是响应可能会有所不同,我希望确保我没有得到这些请求的缓存响应。我需要每个请求点击网页。 我假设对POST请求的响应不会被缓存,这对吗?