http:200(from-cache)&http:304

- 1 min

####200 (from-cache) vs 304 静态资源的本地缓存有两种形式,一种是200(from-cache),另一种是304。 这两种方式有什么区别?

简单的来讲,200(from-cache)就是没有发起 http 请求。

304则是向服务器发起了一次请求,服务器发现文件没有被改变,则返回304使浏览器应用本地文件。

那么,这两种方式,又是通过什么来触发的呢?

简单的说就是通过cache-control来控制的。通过浏览器调试工具,我们可以看到,在触发304时,cache-control的值为max-age=0 。当cache-controlmax-age=0时,可以当成是浏览器强行向服务器发起请求,当服务器获得请求之后,检查请求,发现对应文件并没有变化,这时就会返回304,而浏览器接到304回应,则会调用本地缓存的文件。

通过comand+rf5刷新浏览器的时候,会触发浏览器将cache-control设置为max-age=0,这时就会接收到304请求了。

说到浏览器调试工具,chrome 浏览器调试工具中,还有一项是Disable cache。当启用这个选项时,会发现所有的请求都是正常的200请求,也就是每次都会从服务器完整的下载静态资源,这个又是怎么实现的?

还是继续来看cache-control,这时我们会发现cache-control的值变成了no-cache,也就是说强行不使用缓存,所以在服务端接到这个请求的时候,会静态文件再完整的返回。

####bonus:

rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora