原本以为
200 from memory cache 不访问服务器,直接读缓存,从内存中读取缓存。此时的数据时缓存到内存中的,当kill进程后,数据将不存在
200 from disk cache 不访问服务器,直接读缓存,从磁盘中读取缓存,当kill进程时,数据还是存在。
304 Not Modified 访问服务器,发现数据没有更新,服务器返回此状态码。然后从缓存中读取数据。
后来出现了304 not modified (from memory cache),请求要这么解释啊?
原本以为
200 from memory cache 不访问服务器,直接读缓存,从内存中读取缓存。此时的数据时缓存到内存中的,当kill进程后,数据将不存在
200 from disk cache 不访问服务器,直接读缓存,从磁盘中读取缓存,当kill进程时,数据还是存在。
304 Not Modified 访问服务器,发现数据没有更新,服务器返回此状态码。然后从缓存中读取数据。
后来出现了304 not modified (from memory cache),请求要这么解释啊?
如果资源已经过期(由 Cache-control 或 Expires 指定的过期时间),浏览器会携带资源的 ETag 等 HTTP 头向服务器发起请求,服务器接到请求后就会根据 ETag 等 HTTP 头检查文件内容是否有改动。如果没有改动,就没必要再返回文件内容,而是返回 304 的状态码,告诉浏览器可以继续使用本地缓存,所以浏览器就再次从本地缓存中读取资源。
3 回答2.4k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答688 阅读✓ 已解决
1 回答1.2k 阅读
821 阅读
401 阅读
因为你之前访问过一次,已经从disk读入memory了,你再次调用不就from memory cache了。
具体的机制比较复杂,比如有的内容不保存到memory cache,有的不保存到disk cache,但你只要知道这两者是相辅相成的,并不是互斥的,你这个提问的现象就不难理解了。
具体可以去查阅chromium的相关文档。