好的,我在我们的开发服务器上的IIS6中有过期标题的播放,我真的不明白!
因此,如果我没有为文件添加过期标题,则在使用firebug查看时会收到以下请求/响应:
Accept */*
Accept-Encoding gzip, deflate
Accept-Language en-gb,en;q=0.5
Cache-Control no-cache
Connection keep-alive
Cookie __utma=222382046.267771103.1330592028.1337002926.1340787333.122; __utmz=222382046.1330592028.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=76038230.629470783.1340728034.1340728034.1340786921.2; __utmz=76038230.1340728034.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); timeOutCookie=Wed%20Jun%2027%202012%2011%3A17%3A22%20GMT+0100%20%28GMT%20Daylight%20Time%29; __utmb=76038230.26.10.1340786921; __utmb=222382046.5.10.1340787333; ASP.NET_SessionId=yhib5kyxf1m5azuhoogrstt5; __utmc=76038230; Travel2=ECC62DC4F9C36A41F3BCF0C54F96D877FEA32D4867DB1A3A97D0C6A3BE79EE98517B9B1A4E24289C863D86A2A4A846EA1FF4BF3822E8B6CBF872E25DD1ADF306F724EE1500AA71E28CFCD02476748163929B73856C505E50D185C05E6322488F
Host site
Pragma no-cache
Referer http://site/Agents/Flights/FlightSearch.aspx?
响应:
Accept-Ranges bytes
Content-Length 17864
Content-Type application/x-javascript
Date Wed, 27 Jun 2012 09:21:07 GMT
Etag "0de7d7f192dcd1:a07d"
Last-Modified Tue, 08 May 2012 12:53:00 GMT
Server Microsoft-IIS/6.0
X-Powered-By ASP.NET
现在,如果我现在按f5,系统会从客户端缓存中检索文件,很酷!
现在,如果我添加expires标头并按ctrl f5,我会得到一个稍微不同的请求/响应:
Accept */*
Accept-Encoding gzip, deflate
Accept-Language en-gb,en;q=0.5
Cache-Control no-cache
Connection keep-alive
Cookie __utma=222382046.267771103.1330592028.1337002926.1340787333.122; __utmz=222382046.1330592028.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=76038230.629470783.1340728034.1340728034.1340786921.2; __utmz=76038230.1340728034.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); timeOutCookie=Wed%20Jun%2027%202012%2011%3A21%3A11%20GMT+0100%20%28GMT%20Daylight%20Time%29; __utmb=76038230.27.10.1340786921; __utmb=222382046.5.10.1340787333; ASP.NET_SessionId=yhib5kyxf1m5azuhoogrstt5; __utmc=76038230; Travel2=ECC62DC4F9C36A41F3BCF0C54F96D877FEA32D4867DB1A3A97D0C6A3BE79EE98517B9B1A4E24289C863D86A2A4A846EA1FF4BF3822E8B6CBF872E25DD1ADF306F724EE1500AA71E28CFCD02476748163929B73856C505E50D185C05E6322488F
Host site
Pragma no-cache
Referer http://site/Agents/Flights/FlightSearch.aspx?
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1
响应:
Accept-Ranges bytes
Cache-Control max-age=86400
Content-Length 17864
Content-Type application/x-javascript
Date Wed, 27 Jun 2012 09:24:41 GMT
Etag "0de7d7f192dcd1:a082"
Last-Modified Tue, 08 May 2012 12:53:00 GMT
Server Microsoft-IIS/6.0
X-Powered-By ASP.NET
很棒我现在已经在缓存控制中获得了最大的年龄。现在令我困惑的是,据我所知,现在网站在下载方面的表现存在实际差异。如果按f5,它会从缓存中获取,如果我按下控制器f5,它会从服务器上获取HTTP 200.
那么这如何提高性能呢?你如何获得HTTP 304而不是http 200?我只是没有得到这几乎存档的东西?
任何帮助都会很好,谢谢
答案 0 :(得分:1)
当您明确设置Expires
或max-age
时,您告诉客户端在这么长时间内缓存响应是安全的。客户端很乐意从缓存中获取它,它将不触摸您的服务器,将没有304.除非您执行Ctrl + F5,这会强制浏览器重新执行完整请求,从而导致200
现在如果你没有设置Expires
或max-age
怎么办?这只是意味着客户端pick an expiration time by itself,启发式。您的响应仍然被缓存,只有浏览器必须猜测多长时间。
因此,Expires
/ max-age
在两种情况下都很有用。
Cache-Control: no-cache
和Expires
(某些版本的IE将忽略no-cache
)。 条件请求,304以及所有这些仅在内容已过期之后才开始播放。要重新验证它,客户端可能会执行条件GET
,这取决于您的服务器设置,可能会或可能不会产生304。
答案 1 :(得分:0)
性能改进来自减少HTTP请求。当一个浏览器正在解析一个页面并且看到它必须请求一个CSS文件时,如果它已经在它的缓存中有一个max-age=31536000
的副本,它知道它的缓存副本文件有效期为1年且不必提出HTTP请求来获取文件。
减少到服务器的往返次数应该会导致加载页面更快,并为用户带来更好的体验。
希望这有帮助。