我从Visual Studio中的WebApi .Net Core 2.0模板创建了一个新的解决方案。 我在启动时添加了以下内容。ASP.NET Core 2.0 - Http响应缓存中间件 - 无缓存
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddHttpCacheHeaders(opt => opt.MaxAge = 600);
services.AddResponseCaching();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseResponseCaching();
app.UseHttpCacheHeaders();
app.UseMvc();
}
然后,邮递员,我打http://localhost:xxxx/api/values
这是由模板创建一个端点,并且返回["value1","value2"]
注意,我确信,邮差不发送no-cache标题(在邮差设置)。
HttCacheHeaders
服务来自repo。它添加了HTTP缓存头。所以,我的终点响应头是:
- 缓存控制:公众,最大年龄= 600
- 内容类型:应用程序/ JSON的;字符集= UTF-8
- 日期:星期五,2017年9月29日14时02分29秒GMT
- 的ETag:C5DFA8974BB722D27E71EE50D3D14625
- 过期:星期五,2017年9月29日14时03分29秒GMT
- 上次修改:周五,2017年9月29日14时02分29秒GMT
- 服务器:红隼
- 传输编码:分块
- 各不相同:接受,接受语言,接受编码
- X供电-者:ASP。 NET
- X-SourceFiles:=?UTF-8?B?................
问题是没有东西会被缓存。 Ouput
窗口只显示The response could not be cached for this request.
所以我有点失去了如何使用ASP.NET Core ResponseCaching Middleware
。
更新
如果我不使用HttCacheHeaders
服务,但添加[ResponseCache(Duration = 600)]
到我的控制器的作用下,高速缓存的工作原理。
请注意,我想使用HttCacheHeaders
的原因是ETag
和Last-Modified
稍后会进行验证缓存以及到期缓存。
我从来没有说过它是。 ASP.NET ResponseCaching是,它不适用于HttpCacheHeaders。 –