缓存头部分析器

分析任意 URL 的 HTTP 缓存头。检查 Cache-Control、Expires、ETag、Last-Modified、Vary、Age 以及常见的 CDN 缓存信号,以理解浏览器与共享缓存的行为。包含重定向追踪、原始头信息视图、过滤、问题发现以及 JSON/PDF 导出功能。

Loading…

关于 缓存头分析器

粘贴一个 URL,即刻了解其缓存方式:浏览器指令、共享 CDN/代理缓存(s-maxage、surrogate controls)、验证器(ETag/Last-Modified)以及重新验证模式(stale-while-revalidate、stale-if-error)。用于调试性能、防止意外缓存 HTML 以及验证静态资源缓存策略。

功能

  • 基于 URL 的缓存审计,提供清晰的评分卡与发现项(专注于缓存/性能头信息)。
  • 跟踪重定向(最多 10 次),查看缓存规则实际应用的位置。
  • 原始头信息视图,确保完全透明(服务器/CDN 实际返回的内容)。
  • 缓存分析亮点:Cache-Control 指令、Expires/Pragma 及其冲突。
  • 验证器检查:ETag 和 Last-Modified 检测(用于条件请求与重新验证)。
  • Vary 分析,捕捉缺失或有风险的 Vary 行为(尤其针对个性化内容)。
  • CDN 信号检测:Age、Via、CF-Cache-Status、X-Cache 以及 Fastly/Akamai/CloudFront 风格的头信息。
  • 过滤器与“仅显示问题”模式,快速聚焦于可操作的问题。
  • 将结果导出为 JSON 和 PDF 报告(非常适合审计和交付给客户)。
  • 优先使用 HEAD 探测(回退到 GET),在保持兼容性的同时最小化带宽使用。

🧭 使用方法 for cache-headers-analyzer

1

输入 URL

粘贴您想要审计的完整 URL(例如,[https://example.com/static/app.css](https://example.com/static/app.css))。

2

选择请求行为

保持启用“优先尝试 HEAD(回退到 GET)”以进行快速检查。如果 URL 可能重定向(HTTP→HTTPS、www、CDN 等),请启用“跟踪重定向”。

3

选择分析器焦点

使用“自动(推荐)”以获得平衡视图。切换到“浏览器缓存”、“CDN / 代理缓存”或“API 缓存”,以优先显示与您的端点最相关的发现项。

4

查看发现项与头信息分类

首先检查评分/发现项,然后深入查看缓存指令、验证器(ETag/Last-Modified)、Vary 分析以及 CDN 信号(Age、缓存状态头信息)。如果需要完整响应,请开启“显示原始头信息”。

5

导出报告

下载 JSON 报告用于自动化处理,或下载 PDF 报告用于审计以及与团队成员/客户共享。

技术规格

请求模型

此工具执行 URL 头信息检查,并可选择跟踪重定向。它首先尝试 HEAD 请求(如果启用),并在需要时回退到 GET。

设置行为默认值
优先尝试HEAD(回退至GET)使用HEAD快速获取头部信息;若HEAD不受支持或信息不足则回退至GET已启用
跟随重定向跟随重定向链以检查最终缓存行为已启用
最大重定向次数重定向上限,防止无限循环10(范围0–20)
超时时间请求超时限制15000毫秒
用户代理标识请求的用户代理Encode64Bot/1.0 (+[https://encode64.com](https://encode64.com))
私有网络出于安全考虑,阻止访问私有网络范围已禁用(不允许私有网络)

分析的头部与信号

分析器专注于缓存语义(浏览器和共享缓存)以及常见的CDN边缘信号。

类别示例
缓存指令Cache-Control、Expires、Pragma、Surrogate-Control、CDN-Cache-Control
验证器ETag、Last-Modified(用于条件请求/重新验证)
共享缓存行为s-maxage、stale-while-revalidate、stale-if-error(当出现在Cache-Control中时)
Vary行为Vary(缓存键变化和个性化安全性)
CDN/代理信号Age、Via、CF-Cache-Status、X-Cache、X-Cache-Hits、Server-Timing及其他边缘提示
部分CDN头部为供应商特定;其存在和含义可能因提供商和配置而异。

启发式规则(触发警告的条件)

分析结果基于实用的缓存启发式规则,旨在帮助发现缺失、矛盾或薄弱的缓存策略。

启发式规则检查内容
缺少Cache-Control当Cache-Control缺失时发出警告
冲突的指令当指令出现不一致时发出警告(例如,混合的缓存意图)
缺少验证器当可缓存响应缺少ETag/Last-Modified时发出警告
弱验证器标记相关的弱验证器模式
Vary风险当可能需要变化但Vary似乎缺失时发出警告
Pragma no-cache不匹配当出现Pragma: no-cache但没有相应的Cache-Control时发出警告

分类(静态资源 vs HTML vs API)

分析器可以从URL路径推断内容类型意图,以定制缓存建议。

类别路径模式(示例)
静态资源.css、.js、.png、.svg、.woff2等
HTML.html、.htm
API以/api/开头或以.json结尾的路径
如果您的URL不匹配这些模式,请使用“分析器焦点”来引导建议。

命令行

使用这些CLI代码片段在本地检查缓存头。它们不替代此工具的发现/评分,但可以帮助您快速复现结果。

macOS / Linux

使用HEAD请求获取头信息

curl -I [https://example.com/static/app.css](https://example.com/static/app.css)

在不下载正文的情况下检查Cache-Control、Expires、ETag、Last-Modified、Vary和CDN信号。

跟随重定向并显示头信息

curl -IL [https://example.com/](https://example.com/)

显示重定向链,以便验证缓存指令在何处更改。

Run

Windows (PowerShell)

获取响应头信息

(Invoke-WebRequest -Uri [https://example.com/static/app.css](https://example.com/static/app.css) -Method Head).Headers

列出包括 Cache-Control、ETag、Last-Modified 以及供应商 CDN 头信息(如果存在)。

对于带有哈希文件名的静态资源(如 app.abc123.css),建议使用长期缓存并设置 immutable 标志。对于 HTML 文件,应保守处理,避免提供过时的个性化页面。

使用场景

静态资源缓存审计(CSS/JS/图片/字体)

验证指纹化资源是否可长期缓存,并在需要时能有效重新验证。

  • 确认 Cache-Control 包含较长的 max-age 和(适当时)immutable 标志
  • 确保存在验证器(ETag 或 Last-Modified)以安全重新验证
  • 检查 CDN 缓存命中指示器(Age、CF-Cache-Status、X-Cache)
Cache-Control: public, max-age=31536000, immutable
ETag: "686897696a7c876b7e"
Vary: Accept-Encoding

防止 HTML 页面意外缓存

发现 HTML 页面在 CDN 或浏览器级别缓存过于激进的情况,这可能会破坏登录流程、个性化设置和 SEO 渲染一致性。

  • 检测 HTML 上过于宽松的 Cache-Control 设置
  • 识别缺少 Vary 头的情况,其中内容因 Cookie、认证或语言而异
  • 确认安全的重新验证模式

API 端点缓存审查

了解 API 响应是否启用了共享缓存,以及您的 API 是否可安全缓存。

  • 通过 s-maxage 检测共享缓存
  • 识别 stale-while-revalidate / stale-if-error 策略
  • 当 API 响应可缓存时标记缺少验证器的情况

跨重定向调试 CDN 行为

许多网站会进行重定向(HTTP→HTTPS、根域名→www、区域重定向)。此工具有助于确保从第一跳到最终响应的缓存策略保持一致。

  • 验证每个跳转和最终 URL 的头信息
  • 捕获边缘规则或源重写引入的缓存头变化

❓ Frequently Asked Questions

此工具分析哪些缓存相关的头信息?

它专注于缓存语义和信号:Cache-Control、Expires、Pragma、Age、ETag、Last-Modified、Vary,以及常见的 CDN/代理指示器,如 Via、CF-Cache-Status、X-Cache 和相关边缘头信息。

为什么我在浏览器和 CDN 之间看到不同的缓存结果?

浏览器遵循端到端缓存指令(Cache-Control、Expires),而 CDN 和代理可能应用共享缓存规则(s-maxage、Surrogate-Control)和边缘策略。响应可能在边缘可缓存,但在浏览器中寿命较短,反之亦然。

ETag 和 Last-Modified 有什么用途?

它们是条件请求的验证器。使用 ETag(If-None-Match)或 Last-Modified(If-Modified-Since),客户端和缓存可以重新验证资源,并在内容未更改时接收轻量级的 304 Not Modified 响应。

我应该长期缓存 HTML 页面吗?

通常不建议。HTML 经常频繁更改,并且可能是个性化的。激进的缓存可能导致提供过时或错误的内容。建议使用短缓存并配合重新验证,当内容依赖于头信息/Cookie 时使用正确的 Vary 规则。

什么是 Vary,为什么它很重要?

Vary 告诉缓存哪些请求头会影响响应(例如 Accept-Encoding)。缺少或不正确的 Vary 可能导致缓存提供错误的变体(压缩与未压缩、语言变体等)。

在这里粘贴 URL 安全吗?

该工具对提供的 URL 执行服务器端请求,并阻止私有网络目标。请使用您信任的公共 URL,并避免在 URL 查询字符串中粘贴敏感信息。

我可以导出分析结果吗?

可以。该工具支持导出 JSON 报告和 PDF 报告,以便您分享结果或将其附加到性能审计中。

Pro Tips

Performance Tip

如果您的资源文件带有指纹(文件名中包含哈希值),请使用较长的 max-age 并配合 immutable 指令,以实现最佳重复访问性能。

Security Tip

如果 HTML 是个性化的(基于 Cookie 或身份验证),请避免在共享缓存中缓存,除非您能完全控制缓存键和 Vary 行为。

Performance Tip

对于可缓存的资源,建议优先使用验证器(ETag 或 Last-Modified),这样客户端可以通过 304 状态码重新验证,而无需重新下载。

Best Practice

注意相互冲突的指令,例如 no-store 与较长的 max-age 同时使用;这通常表明配置有误。

Best Practice

调试重定向时,请比较每个跳转步骤的缓存头;边缘规则可能会在重定向和最终 URL 之间改变缓存行为。

CI Tip

导出 JSON 报告并将其保存在 CI/性能审计工件中,以便随时间推移跟踪性能退化情况。

Additional Resources

Other Tools