【问题标题】:WHy does google insight ask to serve static assets with an efficient cache policy for images with expiry?为什么谷歌洞察力要求为具有过期图像的有效缓存策略提供静态资产?
【发布时间】:2019-01-22 19:48:30
【问题描述】:

之前我在 google Insights 中测试过,它列出了一些可以添加到期日期的图像、css 和 js 文件,至少这是我对此的理解:

使用高效的缓存策略提供静态资产

所以我通过将图像添加到 aws s3 存储桶并将持续时间设置为 7 天来进行测试。当我在 Chrome 开发工具中检查时,它确实显示了 Cache-Control: max-age=604800。大小表示从内存中获取,状态码为 304。

但是现在当我在谷歌页面速度洞察中再次测试时,它仍然在

下显示这个特定的图像

使用高效的缓存策略服务静态资产

部分。

如果按照建议添加到期/更长的持续时间,为什么它仍会在此处显示图像?为了使这个静态文件正确提供,我还应该做些什么吗?

【问题讨论】:

    标签: cache-control pagespeed-insights


    【解决方案1】:

    Google's Lighthouse suggests 建议一年,但也解释说它的启发式比硬编码的限制更通用。

    如果您想听从他们的建议,最简单的方法是使用一年,尽管较小的值应该可以通过检查。

    从例子:

    Cache-Control: max-age=31536000
    

    如果可能,将不可变的静态资产缓存很长时间,例如一年或更长时间。配置您的构建工具以在您的静态资产文件名中嵌入一个哈希,以便每个文件名都是唯一的。

    启发式被解释为源自真实统计数据,而不是具有特定值:

    此估算值包括对每个资源的最佳缓存持续时间的一些计算,基于报告给 Chrome 的汇总使用统计信息。更长的持续时间不一定更好。查看审计源以获取详细信息。最终,由您决定资源的最佳缓存持续时间。

    the source code 中,您可以看到启发式是如何定义的:

    // Ignore assets that have very high likelihood of cache hit
    const IGNORE_THRESHOLD_IN_PERCENT = 0.925;
    
    ...
    
    const cacheHitProbability = CacheHeaders.getCacheHitProbability(cacheLifetimeInSeconds);
    if (cacheHitProbability > IGNORE_THRESHOLD_IN_PERCENT) continue;
    
    ...
    static getCacheHitProbability(maxAgeInSeconds) {
    // This array contains the hand wavy distribution of the age of a resource in hours at the time of
    // cache hit at 0th, 10th, 20th, 30th, etc percentiles.
    // Example: a max-age of 12 hours already covers ~50% of cases, doubling to 24 hours covers ~10% more.
    ...
    const RESOURCE_AGE_IN_HOURS_DECILES = [0, 0.2, 1, 3, 8, 12, 24, 48, 72, 168, 8760, Infinity];
    assert.ok(RESOURCE_AGE_IN_HOURS_DECILES.length === 12, 'deciles 0-10 and 1 for overflow');
    

    长话短说:我认为阈值大约是三个月(大约max-age=8337600),但匹配确切值不太可能比选择一年更有用。

    【讨论】:

      猜你喜欢
      • 2021-07-23
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 2021-11-25
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多