Cache-Control: immutable

  HTTP已经提供了一个新的缓存控制项目:  Cache-Control extensions,在Cache-Control中提供了一个新的扩展属性:immutableimmutable表示响应内容将一直不会改变,它和max-age是对缓存生命周期控制的互补性属性,具体举例如下:

  Cache-Control: max-age=365000000, immutable

  当一个支持immutable的客户端浏览器看到这个属性时,它应该知道:如果没有超过时间上的过期失效时间,那么服务器端该页面内容将不会改变,这样浏览器就不应该再发送有条件的重新验证请求,比如通过If-None-Match 或 If-Modified-Since等条件再向服务器端发出更新检查,也就是说,通常过去我们使用304回复客户端该页面内容没有变化,但是如果用户按浏览器的刷新或F5键,浏览器会再次向服务器端发出该页面内容请求,服务器端如果确认该页面没有变化,那么发回304给客户端,不再发送该页面的实体内容,虽然这样节省了来回流量,但是如果大型网站的很多用户为了得到及时信息,经常会刷新浏览器,这就造成了大量刷新请求,向服务器端求证该页面是否改变,这会影响网站的带宽,也增加服务器端验证压力,而新的选项immutable可以杜绝这种现象。

  新的测试表明,immutable可以节省数百个HTTP请求,提供动态HTML的加载时间,提高时间有数百毫秒,这是因为服务器不必再处理304响应了。