我已经设置缓存头是远在将来(从现在起1年)和已禁用由YSlow的建议(在ETag的http://developer.yahoo.com/performance/rules.html#etags ),但谷歌的PageSpeed似乎需要的ETag(或上次修改)缓存标头设置后还是一样。
“指定过期或缓存控制最大年龄的一个,和Last-Modified或ETag之一,对于所有可缓存资源是非常重要的。”
这两个规则似乎是矛盾的对方。
我已经设置缓存头是远在将来(从现在起1年)和已禁用由YSlow的建议(在ETag的http://developer.yahoo.com/performance/rules.html#etags ),但谷歌的PageSpeed似乎需要的ETag(或上次修改)缓存标头设置后还是一样。
“指定过期或缓存控制最大年龄的一个,和Last-Modified或ETag之一,对于所有可缓存资源是非常重要的。”
这两个规则似乎是矛盾的对方。
YSlow的不建议删除一般,但对于某些环境ETag的。 当不使用ETag的,那么你应该使用Last-Modified
代替。
ETag
和Last-Modified
是在重新请求已经被缓存,也许过期资源 条件GET-请求 。
Cache-Control max-age
是定义一个缓存项有多长 ,而无需再次询问有效的肯定。 (在此规则到期,则该浏览器将有条件的GET ...)
所以你的情况:
Cache-Control
报头的设置。) HTTP 304
时没有发生任何变化和空体。 浏览器将继续使用它的缓存项在这种情况下,无需重传。 (使用ETag
和/或Last-Modified
头设定) (浏览器可能会或可能不会尊重你的数据。例如,它可能是一个浏览器会做,即使当一个人一年尚未过期的有条件申请。)
对于高度优化的网站的Cache-Control
是更为重要的,因为你把它faaaar将来到期头和简单地改变URL在情况下,它改变了资源。 虽然这可以防止使用条件要求的它为您提供了定义,同时能够在同一时间立刻服务资源的新版本给大家expires头时要激进的极端的能力。 这是因为新的URL它似乎是在浏览器视图新的资源。
对于Java存在一个框架调用jawr这使得使用这些和其他概念,而无需你的网站发展的负面影响。
ETag
和Cache-Control
头是不是排他性的。 究其原因,你链接到页面建议删除的ETag是减少HTTP标头..这将在最好的为您节省几个字节的大小。 下面是一个使用情况下,为什么仍然是很有意义的两个:
application.js
了一个星期到期日,以及ETAG指纹 如果你不提供ETag
或Last-Modified
, 浏览器请求并下载整个文件。
好相关的资源: https://developers.google.com/speed/articles/caching