今天在作项目的优化的时候,使用chrome开发者工具的network发现了细节:web
虽然这两个看起来都是从缓存中读取,但仍是有一些不同的!chrome
webkit的资源分类主要分为两大类:主资源和派生资源浏览器
不访问服务器,直接读缓存,从内存中读取缓存。此时的数据时缓存到内存中的,当kill进程后,也就是浏览器关闭之后,数据将不存在。缓存
可是这种方式只能缓存派生资源。服务器
不访问服务器,直接读缓存,从磁盘中读取缓存,当kill进程时,数据仍是存在。网络
这种方式也只能缓存派生资源工具
访问服务器,发现数据没有
更新,服务器返回此状态码。而后从缓存中读取数据。优化
可是这里有困惑,怎么判断from memory cache仍是304spa
因此咱们能够来解释这个现象对象
图片为例:
访问-> 200 -> 退出浏览器
再进来-> 200(from disk cache) -> 刷新 -> 200(from memory cache)
web中的文件被用户访问(请求)后的存活时间,是个相对的值,相对Request_time(请求时间)
Expires指定的时间根据服务器配置可能有两种:
若是max-age和Expires同时存在,则被Cache-Control的max-age覆盖
WEB 服务器认为对象的最后修改时间,好比文件的最后修改时间,动态页面的最后产生时间
对象(好比URL)的标志值,就一个对象而言,文件被修改,Etag也会修改
简单理解,强缓存
见图片(来源自网络)