前面两位回答者已经给出了部分答案,浏览器第二次打开必然是使用了缓存。在"检查"模式下,可以network观察资源的加载情况。 从缓存获取的位置可以分为一下四种: service work memory cache disk cache push cache 如果命中,则返回status: 200。如果以上四种都未命中,则会发起网络请求,获取最新的资源。 同时去服务获取资源的时候,存在两种缓存策略,分别为 强制缓存 协商缓存 强制缓存:主要看http header中的expires字段,会指定资源过期时间,在该时间之前,则不会去请求服务端数据。并且依赖于客户端,即客户端可以通过修改本地的时间跳过校验。 协商缓存协商缓存 http/1.1 会更将last-modified的时间发送给服务端判断,当前的资源是否修改。http/1.1 另一种协商缓存是使用Etag,将Etag发送给服务端,判断当前的资源是否修改, 如果为修改,则返回status:304 Not-Modified
前面两位回答者已经给出了部分答案,浏览器第二次打开必然是使用了缓存。在"检查"模式下,可以network观察资源的加载情况。
从缓存获取的位置可以分为一下四种:
如果命中,则返回status: 200。如果以上四种都未命中,则会发起网络请求,获取最新的资源。
同时去服务获取资源的时候,存在两种缓存策略,分别为
强制缓存:
主要看http header中的expires字段,会指定资源过期时间,在该时间之前,则不会去请求服务端数据。并且依赖于客户端,即客户端可以通过修改本地的时间跳过校验。
协商缓存
协商缓存
http/1.1 会更将last-modified的时间发送给服务端判断,当前的资源是否修改。
http/1.1 另一种协商缓存是使用Etag,将Etag发送给服务端,判断当前的资源是否修改,
如果为修改,则返回status:304 Not-Modified