服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-08-24 更新于 2026-08-24 简米科技 3,528 字 8 分钟阅读

不同路径缓存时间在动静分离后怎样设置?静态资源缓存策略优化

导读动静分离后,不同路径的缓存时间应按资源类型和更新频率差异化设置:静态资源(如CSS、JS、图片)设置长缓存(通常30天以上),动态接口(如API、动态页面)设置短缓存或不缓存,并通过版本号或指纹策略确保静态资源更新时能即时生效,动静分离后不同路径缓存时间怎么设?核心原则在动静分离架构中,静态资源与动态请求走不同……

动静分离后,不同路径的缓存时间应按资源类型和更新频率差异化设置:静态资源(如CSS、JS、图片)设置长缓存(通常30天以上),动态接口(如API、动态页面)设置短缓存或不缓存,并通过版本号或指纹策略确保静态资源更新时能即时生效。

动静分离后不同路径缓存时间怎么设?核心原则

在动静分离架构中,静态资源与动态请求走不同路径,缓存时间自然不能一刀切,行业共识认为,缓存时间的设置取决于资源的变更频率和业务重要性,静态资源一般不变,适合长期缓存;动态内容需要实时性,缓存时间必须缩短,如果你正在优化网站性能,这是最基础的一步。

  • 静态资源:CSS、JS、图片等,通常设置30天至1年,配合版本号强制更新。
  • 动态接口:根据数据更新频率,缓存几秒到几分钟,或者使用Last-Modified/Etag验证。
  • 动态页面:可考虑页面静态化或片段缓存,设定合理的过期时间。

静态资源路径缓存时间设置策略

CSS、JavaScript、图片的缓存时间

对于前端资源,你可以放心地设置较长的缓存时间,业内专家指出,静态资源缓存建议设为30天以上,并在资源路径中加入版本号或MD5指纹,这样,即使浏览器缓存了旧资源,改动后的新资源也会被加载,在Nginx中配置:

location ~ .(js|css|png|jpg|jpeg|gif|ico)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
}

这里,immutable指令告诉浏览器无需重新验证,直接使用缓存,配合版本号,如style.abc123.css,即可实现持久缓存又可控更新。

字体文件、视频等大文件缓存

字体和视频文件更新频率更低,但其体积较大。建议设置更长的缓存时间,比如1年,确保这些文件通过CDN分发,并启用Gzip压缩,如果不希望客户端缓存太久,可以设置max-age

不同路径缓存时间在动静分离后怎样设置?静态资源缓存策略优化

为31536000秒(1年),并配合变更URL,对于电商网站,商品图片缓存时间可以设长一些,而促销海报则需要根据活动周期适当调整。

动态接口缓存时间如何配置

API接口缓存时间

动态接口的缓存时间需要根据业务场景调整,对于频繁变化的数据,如用户状态、实时库存,缓存时间应控制在几秒到几十秒,甚至不缓存,对于不常变化的数据,如产品分类,可以缓存几分钟到几小时,在Nginx中,可以使用proxy_cache指令,并设置proxy_cache_valid

location /api/ {
    proxy_cache my_cache;
    proxy_cache_valid 200 5s;
    proxy_cache_key "$scheme$request_method$host$request_uri";
}

这里,200状态码的响应缓存5秒,如果数据更新频率更高,可以缩短到1秒,或者直接使用no-cache,对于WordPress网站的REST API,大多数情况下缓存时间设为10秒左右,即可平衡负载与实时性。

动态页面缓存

对于由PHP、Python等后端生成的页面,可以采用页面缓存或片段缓存,WordPress网站可以使用缓存插件,将整页缓存为静态HTML,设置缓存时间10分钟到1小时,对于内容更新频繁的新闻站,缓存时间应更短,比如5分钟,而在高并发场景下,你还可以利用Redis等内存缓存,配合Cache-Control: s-maxage指令,让CDN节点缓存较长时间,源站只需处理缓存刷新请求。

不同路径缓存时间差异化配置实操

Nginx配置示例

在Nginx中,你可以通过多个location块实现不同路径的缓存时间差异化,在同一个网站配置中,同时处理静态资源、动态接口和动态页面:

# 静态资源缓存30天
location ~ .(js|css|png|jpg|jpeg|gif|ico|svg)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
}
# 动态接口不缓存或极短缓存
location /api/ {
    add_header Cache-Control "no-cache, no-store, must-revalidate";
    proxy_pass http://backend;
}
# 动态页面短缓存(通过后端响应头控制)
location / {
    proxy_pass http://backend;
    proxy_cache my_cache;
    proxy_cache_valid 200 10m;
}

不同路径缓存时间在动静分离后怎样设置?静态资源缓存策略优化

如果你的静态资源托管在CDN,源站设置缓存头后,CDN会遵循这些指令,但有些CDN允许你忽略源站头,自定义缓存时间,在简米云CDN控制台,你可以为不同路径设置缓存规则,如“/static/”缓存30天,“/api/”不缓存,这种CDN缓存时间设置方式,可以让你灵活控制每个路径的缓存行为。

CDN缓存时间配置

CDN节点缓存时间可以根据业务需求调整。对于静态资源,CDN缓存时间可以设置为与浏览器缓存一致,或者更长,以减少回源,对于动态内容,建议遵循源站缓存头,或设置较短时间,如10秒,据相关统计,合理设置CDN缓存时间可以减少70%以上的回源流量,在酷番云CDN或Cloudflare中,你可以在“缓存规则”面板中按路径前缀自定义缓存时间,并开启“忽略源站Cache-Control”来实现更精细的控制。

浏览器缓存与服务器缓存协调

浏览器缓存主要通过Cache-ControlExpires控制,服务器缓存(如Nginx、CDN)则需要在源站和CDN之间协调。行业共识是:浏览器缓存时间应小于或等于CDN缓存时间,否则CDN上的资源可能更新后,浏览器仍使用旧缓存,使用ETagLast-Modified可以提供验证机制,让浏览器在资源过期后向服务器发起条件请求,如果资源未变则返回304,避免重复下载,在多版本发布场景中,你还可以利用max-age统一设置长缓存,配合publicprivate指令控制CDN是否缓存。

动静分离缓存时间设置的常见误区

  • 所有路径设置相同缓存时间。 这会浪费静态资源的长缓存优势,同时导致动态内容更新不及时,应该根据资源类型分别设置,比如静态资源用30天,动态接口用5秒。
  • 静态资源缓存时间过长导致更新困难。 只要使用版本号或指纹,缓存过长不会影响更新,浏览器会请求新URL,你只需要在构建时确保文件名变化即可。
  • 不同路径缓存时间在动静分离后怎样设置?静态资源缓存策略优化

  • 忽略验证缓存。 对于动态内容,使用ETagLast-Modified可以有效减少带宽消耗,同时保证内容新鲜度,即使设置了max-age=0,验证机制也能让服务器判断是否返回304,减轻负载。

Q&A:动静分离缓存时间常见问题

问题1:静态资源缓存时间设多久不影响更新?

静态资源缓存时间建议设为30天至1年,同时通过构建工具在文件名中加入内容哈希值,当资源更新时,新文件会被请求,旧缓存自然失效,这样即可实现长期缓存又保证即时更新,对于字体文件,还可以设为1年,因为其更新频率极低。

问题2:动态接口缓存时间设太短会增加服务器压力吗?

动态接口缓存时间太短会降低缓存命中率,增加回源请求,但可以通过设置合理的缓存时间(如5-10秒)和配合使用Redis等内存缓存,来平衡实时性和服务器负载,对于高并发场景,还可以使用CDN边缘计算来实现动态缓存,将计算结果缓存到CDN节点,进一步减少回源压力。

问题3:CDN缓存时间与浏览器缓存时间冲突怎么办?

CDN缓存时间应大于或等于浏览器缓存时间,否则浏览器可能认为资源过期而频繁验证,如果你的CDN缓存时间短于浏览器,浏览器会收到新缓存头,但CDN节点可能已经更新,不会冲突,更安全的做法是统一设置,或使用CDN提供的“忽略源站Cache-Control”功能,自行定义节点缓存时间,多数情况下,你只需在CDN控制台对所有静态资源路径设置一个统一的缓存时间,浏览器端则通过版本号来控制更新,两者互不干扰。

动静分离后的缓存时间设置,本质上是对静态资源极致利用,对动态内容精准控制,通过按路径差异化配置,你的网站既能获得极致的加载速度,又不会影响内容的实时性,掌握这些策略,你的网站性能优化就成功了一半。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱