Cache-Control 与 Expires 做用一致,都是指当前资源的有效期,控制浏览器是否直接从浏览器获取数据仍是从新发送请求到服务器取数据。Cache-Control 的选择更多,设置更细致,若是同时存在的话,优先级高于 Expires。html
配置 Last-Modified/ETag 的状况下,浏览器再次访问统一 URI 的资源,仍是会发送请求到服务器询问文件是否已经修改,若是没有,服务器会只返回状态码 304 回给浏览器,表明资源没有变化,告诉浏览器直接读取缓存数据。Cache-Control/Expires 不一样,若是检测到本地的缓存仍是有效的时间范围内,浏览器直接使用本地副本,不会发送任何请求。二者一块儿使用时,Cache-Control/Expires的优先级要高于Last-Modified/ETag。即当本地副本根据Cache-Control/Expires发现还在有效期内时,则不会再次发送请求去服务器询问修改时间(Last-Modified)或实体标识(Etag)了。浏览器
Etag 是服务器自动生成或者由开发者生成的对应资源在服务器端的惟一标识符,可以更加准确的控制缓存。Last-Modified 与 ETag 是能够一块儿使用的,服务器会优先验证 ETag,一致的状况下,才会继续比对 Last-Modified,最后才决定是否返回304。缓存