【发布时间】:2012-02-18 00:28:03
【问题描述】:
我正在使用WCF Web API 实现一个简单的 REST 服务,并尝试设置 HTTP 标头以缓存响应。
对于这样的简单 GET
http://localhost:49302/my/2
响应标头如下所示:
Server: ASP.NET Development Server/10.0.0.0
Date: Tue, 24 Jan 2012 18:18:44 GMT
X-AspNet-Version: 4.0.30319
Content-Length: 233
Cache-Control: max-age=120
Vary: Accept
Expires: Tue, 24 Jan 2012 18:20:44 GMT
Last-Modified: Tue, 24 Jan 2012 18:18:15 GMT
Content-Type: application/xml; charset=utf-8
意图是客户端应该缓存资源两分钟。
但是,使用 WCF Web API 测试客户端时,不同浏览器的行为不一致:
- 在 Firefox (9.0.1) 中,请求被缓存,两分钟后首先显示资源的新版本。这种行为符合预期。
- 在 Chrome (16.0.912.77 m) 中,缓存标头根本不受尊重。正在为每个 GET 请求获取资源的新版本。这种行为不是预期的(至少是我)。
- 在 Internet Explorer (9) 中的行为与在 Chrome 中相同。
为什么 Chrome 和 IE 不尊重缓存标头?
这是 WCF Web API 测试客户端中的错误吗?
【问题讨论】:
-
WCF Web API 测试客户端非常新,因此它可能存在错误。可以直接用浏览器测试还是写个小测试页。
标签: http rest cross-browser cache-control wcf-web-api