服务器接收到请求,对比请求头中携带的特征值,与服务器中页面的特征值是否一致。若是特征值没有变化,则认为该页面内容未发生变化,只返回 304 状态码的响应头,响应体为空。css
对于缓存过的页面,该页面的「URL的直接资源」会进行 304 处理,页面中须要加载的资源将进行 200 form cache 处理html
http://www.mongoosejs.net/docs/schematypes.html
这个页面。前端
http://www.mongoosejs.net/docs/schematypes.html
直接指向的 html, 即该页面的「URL的直接资源」,会进行 304 处理。为何「其余资源」不像「URL的直接资源」那样,访问服务器判断更新?不访问怎么知道有没有更新呢?浏览器
?v=20191120122038
。浏览器也会当作新的资源。从服务器加载。服务端经过响应头告诉浏览器,「接下来的一段时间」内,直接使用缓存内容。缓存
(http1.0)服务器
Thu, 21 Nov 2019 00:10:44 GMT
,这代表该资源于 2019年11月21日 00时11分44秒过时。在该时间点以前访问,则让浏览器直接从缓存上取。(http1.1)网络
Cache-Control: public, max-age=31536000
,其中 max-age=31536000
就是告知浏览器,在接收到该文件那一刻算起的 31536000 秒内有效,直接从浏览器缓存上取。浏览器会向服务端发起http请求,而后服务端告诉浏览器文件未改变,让浏览器使用本地缓存。使用 Ctrl+F5强制刷新可使得缓存无效并发
(http1.0)框架
(http1.1)E-tag/If-None-Matchmongoose