我想设置缓冲能力的的ASP.NET资源.所以,如果我转到/富/显示它会显示一些资源视图,并缓存这几个小时(例如).为此,我使用了OutputCache属性来装饰我的Action方法.可以在web.config文件中找到此缓存的详细信息(针对此操作方法).
当我设置此输出缓存时,它正确设置maxage value..但s-maxage值为0. WTF?
这是代码......
[Authorize]
[OutputCache(CacheProfile = "SomeController_Show")]
public ActionResult Show(){ ... }
Run Code Online (Sandbox Code Playgroud)
这是配置文件的片段..
<add name="SomeController_Show" duration="3600" varyByParam="authkey;format;blah" />
Run Code Online (Sandbox Code Playgroud)
以及回复的片段......
Cache-Control:public, max-age=3576, **s-maxage=0**
Content-Length:746
Content-Type:application/json; charset=utf-8
Date:Tue, 10 Aug 2010 00:42:17 GMT
Expires:Tue, 10 Aug 2010 01:41:53 GMT
Last-Modified:Tue, 10 Aug 2010 00:41:53 GMT
Server:Microsoft-IIS/7.0
Vary:*
Run Code Online (Sandbox Code Playgroud)
请注意如何正确设置maxage但是s-maxage不是?有人可以帮助我吗?
我的application.js文件名看起来像application-b600352536291bc180983d43e6a2407f.js.所以它的名字中有md5缓存破坏程序.我已将静态资产的max-age选项设置为1小时config.static_cache_control = "public, max-age=3600".但我观察到浏览器不尊重max-age标题并始终从服务器重新验证并进行往返304 Not Modified.我怎样才能保存往返旅程?
请求标题
Request URL:https://blah.com/assets/application-b600352536291bc180983d43e6a2407f.js
Request Method:GET
Status Code:304 Not Modified
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
If-Modified-Since:Sun, 12 Feb 2012 07:36:16 GMT
Run Code Online (Sandbox Code Playgroud)
响应标题
Cache-Control:public, max-age=3600
Connection:keep-alive
Date:Sun, 12 Feb 2012 18:27:48 GMT
Last-Modified:Sun, 12 Feb 2012 07:36:16 GMT
Server:nginx
Vary:Accept-Encoding
Via:1.1 varnish
X-Varnish:499878183
Run Code Online (Sandbox Code Playgroud) 当服务器给出时Cache-Control: max-age=4320000,
新鲜度是在请求时间之后 4320000 秒后考虑的,还是在上次修改日期之后考虑的?