GEO代理分级别吗,有哪些权限
2026/7/1 15:14:36
秋招之前本人不想再做强缓存和协商缓存的笔记了,已经写了四五遍了,真的很头疼我这坏习惯。都是因为我记笔记太混乱了,每次都找不到自己记得笔记,然后就只能能重新再记一遍。
强缓存和协商缓存是 HTTP 缓存的两个层级,浏览器会按「先查强缓存 → 强缓存失效再查协商缓存」的顺序判断,「优先」就是指:
只要强缓存的条件满足(比如资源还在max-age有效期内),浏览器连请求都不会发给服务器,直接从本地缓存取;只有强缓存过期了,才会发请求走协商缓存流程。
Cache-Control(推荐)或Expires,比如:Cache-Control: max-age=86400 // 缓存1天Cache-Control: max-age,只返回Last-Modified + ETag,比如:Last-Modified: Tue, 28 Nov 2025 10:00:00 GMT ETag: "abc123"Cache-Control: max-age=3600 // 先强缓存1小时 Last-Modified: Tue, 28 Nov 2025 10:00:00 GMT ETag: "abc123"Last-Modified/ETag,没更新就返回 304(协商缓存),更新了才返回新资源。强缓存和协商缓存都使用的请求判断流程:
结合Cache-Control: max-age(强缓存) +ETag/Last-Modified(协商缓存)的配置,浏览器的请求流程分为首次请求、强缓存有效期内请求、强缓存过期后请求三个阶段,以下是带细节的流程图解:
# 强缓存:资源缓存1小时(3600秒) Cache-Control: max-age=3600 # 协商缓存:文件唯一标识 + 最后修改时间 ETag: "abc123456" Last-Modified: Wed, 27 Dec 2025 10:00:00 GMTCache-Control+ETag+Last-Modified。max-age过期时间、ETag、Last-Modified)。max-age未过期 →强缓存生效。200 OK (from disk cache/memory cache)。max-age已过期 →强缓存失效,进入协商缓存流程。# 对应 ETag 的验证字段 If-None-Match: "abc123456" # 对应 Last-Modified 的验证字段 If-Modified-Since: Wed, 27 Dec 2025 10:00:00 GMTmax-age过期时间(重新开始计时);ETag+ 新的Last-Modified;首次请求 浏览器 →(无缓存头请求)→ 服务器 →(200+Cache-Control+ETag+Last-Modified)→ 浏览器 → 缓存+渲染 强缓存有效期内请求 浏览器 → 检查max-age未过期 → 直接读本地缓存 → 渲染(无请求) 强缓存过期后请求 浏览器 → 检查max-age过期 → 带If-None-Match/If-Modified-Since请求 → 服务器 ↙️ 资源未更新(304) ↘️ 资源已更新(200+新缓存头) 浏览器更新缓存有效期 浏览器覆盖旧缓存 ↘️ ↙️ 读取缓存/新资源 → 渲染ETag优先级高于Last-Modified(解决文件修改时间秒级内变更的问题)。需要我帮你整理缓存相关的面试易错点吗?比如no-cache和no-store的区别、用户刷新对缓存的影响。(。。。)