CDN加速静态资源时如何设置服务器端的缓存过期时间

CDN加速静态资源时,将源站上的资源缓存到距离客户端最近的CDN节点上。当您访问该静态资源时,可直接从缓存中获取,本文主要介绍如何设置服务器端的缓存过期时间。

详细信息

过期时间控制支持三个维度,优先级依次为控制台设置>源站Header设置>Cache的默认策略设置

  • 关于控制台设置的详细说明,请参见配置缓存过期时间

  • 关于源站Header设置的详细说明,请参见WebServer缓存策略设置

  • Cache的默认策略是在您既没有在控制台设置过期时间,也没有在源站设置过期时间的情况下,会执行一个默认的全局策略,既保证加速效果,又避免因为动态的文件缓存导致的问题。关于Cache的默认策略设置的详细说明,请参见CDN节点默认缓存策略

    说明

    关于OSS缓存策略设置,请参见管理文件元数据

WebServer缓存策略设置

CDN节点默认缓存策略

重要
  • 因为网站开发及其相关技术人员更清楚自身网站的业务逻辑、静态和动态因素,所以建议您通过控制台根据文件类型和文件所在目录,详情请参见配置缓存过期时间

  • 如果您已经配置了缓存策略,那么Cache的默认缓存策略不生效。

  • 默认情况下,CDN节点将根据公式计算出默认的缓存时间。为了便于理解,此处将介绍默认缓存时间的计算公式和相关示例。

    • 计算公式。该公式分为如下三个步骤。

      说明

      缓存时间为t,单位为秒(s);Curtime为当前时间,Last_Modified为源站的Last-Modified响应头。

      1. 计算t1的值。

        t1 = (Curtime - Last_Modified) * 0.1
      2. 将上一步计算的t1之与10进行比较,取最大值为t2。

        t2 = max(10,t1)
      3. 通过上一步计算的t2值与3600进行比较,取最小值为t,则t为缓存时间。

        t = min(t2,3600)
    • 示例如下。

      • 当对象的Last-Modified20140801 00:00:00,当前时间Curtime为20140801 00:10:00,则t1=(Curtime-Last_modified)*0.1=60s,t2=max(10,t1)=60s,t=min(t2,3600)=60s,那么缓存时间为60s。

      • 当对象的Last-Modified20140801 00:00:00,当前时间Curtime为20140802 00:00:00,则t1=(Curtime-Last_modified)*0.1=8640s,t2=max(10,t1)=8640s,t=min(t2,3600)=3600s,那么缓存时间为3600s。

      • 当对象的Last-Modified20140801 00:00:00,当前时间Curtime为20140801 00:01:00, 则t1=(Curtime-Last_modified)*0.1=6s,t2=max(10,t1)=10s,t=min(t2,3600)=10s,那么缓存时间为10s。

  • 如果源站没有Last-Modified响应头,但有ETag,则该对象极有可能是静态资源,将其默认缓存时间设置为dft_expires指令配置的最小值。

  • 如果源站没有Last-Modified响应头,也没有ETag,则认为该对象为动态内容,将其默认缓存时间设置为0,每次都回源。