缓存控制器动作,如静态文件

时间:2018-03-06 13:29:25

标签: asp.net-mvc http outputcache

我想缓存一个控制器动作(结果是动态呈现的javascript代码),所以我添加了这个注释:

/// <summary>
/// Renders embed client javascript.
/// </summary>
/// <param name="minify">True for minifing script</param>
/// <returns>Javascript result.</returns>
[HttpGet]
[ActionName("xtech.embed.client.js")]
[OutputCache(Duration = 3600, VaryByParam = "minify")]
public ActionResult ClientScript(bool minify = false)

在第一个请求中,我获得了回复标题:

cache-control:public, max-age=1812
content-length:23336
content-type:application/x-javascript; charset=utf-8
date:Tue, 06 Mar 2018 13:12:50 GMT
expires:Tue, 06 Mar 2018 13:43:03 GMT
last-modified:Tue, 06 Mar 2018 12:43:03 GMT
server:Microsoft-IIS/10.0
status:200
vary:*

第二次运行与响应标题一致:

cache-control:public, max-age=1670
date:Tue, 06 Mar 2018 13:15:11 GMT
expires:Tue, 06 Mar 2018 13:43:03 GMT
last-modified:Tue, 06 Mar 2018 12:43:03 GMT
server:Microsoft-IIS/10.0
status:304
vary:*

这意味着每个后续请求浏览器都会查询服务器以进行资源修改。我想更改此行为,以便从浏览器缓存中恢复资源,而无需查询服务器,直到缓存过期。

您是否知道这是可以使用数据属性还是需要自定义缓存选项和一些额外的代码?

注意:无法使用静态文件的缓存配置(在webconfig内):How to specify HTTP expiration header? (ASP.NET MVC+IIS)因为结果是动态的(查看呈现的javascript)。

0 个答案:

没有答案