Skip to content

缓存与安全 ​

缓存什么 ​

适合缓存:图片、CSS、JS、字体和公开下载文件。

不要缓存:登录页、后台、订单、购物车、验证码、支付回调、带 Cookie 或 Authorization 的接口。

如果网站有后台,在“不缓存条件”里加入 /admin、/login、/api/private 等路径。缓存设置错误可能把一个用户的页面返回给另一个用户。

缓存更新 ​

发布新版本时,优先给 JS、CSS 和图片加版本号,例如:

text
/assets/app.20261006.js

如果必须立即更新,再使用缓存刷新或预热。刷新前确认 URL 属于当前网站。

CORS ​

公开图片、JS 和字体可以使用 allow_origin: *。

需要登录状态的接口不能这样配置。此时填写明确的来源,并根据实际情况设置:

  • allow_methods;
  • allow_headers;
  • expose_headers;
  • allow_credentials;
  • max_age。

IP、Referer 和 ACL ​

可以设置 IP 黑白名单、Referer 防盗链和地区限制。

白名单只填必要的 IP 或网段。支付平台、监控探针和办公出口不要直接放开整个公网段。

源站保护 ​

源站防火墙只放行 CDN 回源节点和必要端口。不要把源站 IP 写在前端代码或备用 DNS 中。

如果要获取访客真实 IP,只信任 CDN 写入的转发头,不要直接信任用户自己提交的 X-Forwarded-For。

开启安全策略的顺序 ​

  1. 先用默认策略访问网站;
  2. 看拉黑日志和 4xx/5xx;
  3. 再配置 CC、ACL 和防盗链;
  4. 发现误封时,先调整规则,不要直接关闭全部防护。

缓存、CC 和 ACL 不是同一个功能:缓存负责减少回源,CC 负责限制高频请求,ACL 负责允许或拒绝访问。

基于 VitePress 构建