搞WEB开发的经常会说:有缓存,CTRL+F5一下.或鍺:有缓存,CTRL+SHIFT+DEL清一下.那么你知道浏览器有几种方式来读取缓存文件吗.从是否发送了HTTP请求来区分,我觉的可以分两种:
1.浏览器从服务器返回的过期时間判断得出,该文件还没有过期,所以直接从缓存文件夹读取缓存文件,显示网页,并没有走任何网络连接.
2.浏览器发送HTTP请求,请求头中包含了If-Modified-Since 和 If-None-Match字段.讓服务器来判断是否应该读取缓存文件.如果服务器返回304响应,无响应实体,表示服务器认为这个文件没有变化.可以使用缓存中的对应文件,这时瀏览器才会读取缓存.(如果不了解HTTP,可以买本<<>>看看.或者直接)
我把第一种读取缓存的方式称之为"无请求读取缓存",第二种方式称之为"无修改读取缓存".
这里的刷新方式是指能通过哪些方式让一个网页重新加载,我从表现上大概分了三种:
1.最常用的,点击浏览器的刷新按钮,或者按下F5
3.浏览器地址欄上回车,IE里把这种请求方式归为"导航"操作
本文的试验部分只针对F5和CTRL+F5两种刷新方式做对比.这里讲一下为什么F5不能跳过缓存,而后者可以.答案就昰发送的请求头不一样.而且不同的浏览器发送的请求头也有一些区别.
1.F5触发的HTTP请求的请求头中通常包含了If-Modified-Since 或 If-None-Match字段,或者两者兼有.如果服务器认為被请求的文件没有发生变化,则返回304响应,也就没有跳过缓存.