免责声明:本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
概述
本文主要介绍阿里云CDN配置中,Nginx服务的源站如何配置缓存过期时间。
详细信息
在Nginx服务器上,执行编辑/etc/nginx/nginx.conf
配置文件,配置缓存过期时间,配置示例如下:
- 示例一:设置GIF、JPG、JPEG、PNG、BMP、SWF文件的缓存时间为30天,JS、CSS文件的缓存时间为12小时。
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
} - 示例二:设置HTM、HTML文件的缓存时间为3600秒。
location / {
access_log/data/nginx/log/xxx.log api;
root/home/www/html;
if ($request_filename ~ .*\.(htm|html)$)
{
add_header Cache-Control public, max-age=3600;
}
}
更多信息
CDN节点在收到源站响应的静态文件资源时,会按照以下的缓存规则来执行(数值越小,优先级越高):
- 如果源站响应
pragma:no-cache
,不缓存。 - 如果源站响应
cache-control:no-cache
(或者no-store
,或者max-age=0
),不缓存。 - CDN控制台设置的缓存过期时间或者状态码过期时间。
- 源站响应中使用
cache-control
设置过期时间,并且cache-control
既不等于no-cache
,也不等于no-store
,取值为max-age
,并且max-age
大于0,例如:cache-control:max-age=3600
。 - 源站响应中使用
expires
设置过期时间,例如:expires:Tue, 25 Nov 2031 17:25:43 GMT
。 - 如果源站响应中携带了
ETag
或last-modified
,则使用以下规则来计算缓存时间:- 有
last-modified
,使用公式(当前时间-last_modified)* 0.1
,计算结果在10秒~3600秒及之间的,取计算结果时间;小于10秒的,按照10秒处理;大于3600秒的,按照3600秒处理。 - 只有
ETag
,缓存10秒
- 有
- 如果源站返回的数据中
ETag
、last-modified
、cache-control
和expires
这些缓存相关的响应头都没有携带,则默认不缓存。
相关文档
适用于
- CDN
文档内容是否对您有帮助?