【问题标题】:Trouble writing cache-validator for Google Fonts resources为 Google 字体资源编写缓存验证器时遇到问题
【发布时间】:2016-03-14 01:55:15
【问题描述】:

我在我的网站中使用了几种 Google 字体,并且按照 Google 的建议,这就是我在我的 HTML <head></head> 部分中声明它们的方式:

   <link href='https://fonts.googleapis.com/css?family=Oswald' rel='stylesheet' type='text/css'>
   <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>

GTmetrix 的性能测试建议这样做:

以下资源缺少缓存验证器。资源 不指定缓存验证器无法有效刷新。 指定 Last-Modified 或 ETag 标头以启用缓存验证 以下资源:

https://fonts.googleapis.com/css?family=Open+Sans:400,700
https://fonts.googleapis.com/css?family=Oswald

我的问题是,我该如何做到这一点?对于我能想到的所有文件扩展名,我的 .htaccess 中已包含所有 mod_expiresCache-Control,包括 woff、ttf 等。但由于问题没有如&lt;link&gt; 标记中所示的显式扩展,如何为它们编写 Cache-Controlmod_expires 条目?

【问题讨论】:

    标签: .htaccess caching http-headers cache-control


    【解决方案1】:

    指定 Last-Modified 或 ETag 标头 [...]

    以下资源: https://fonts.googleapis.com/css?family=Oswald

    我的问题是,我该如何做到这一点?

    你不能。只有googleapis.com(即Google)的操作者可以控制这些资源的标头。这会降低您的控制权,但意味着 Google 负责重复请求的负载。

    有问题的资源没有&lt;link&gt; 标签中所示的显式扩展

    目前,curl -i 'https://fonts.googleapis.com/css?family=Oswald' 包括:

    Cache-Control: private, max-age=86400
    

    这意味着浏览器只能在一天后请求另一个副本。

    响应负载只有 230 字节(不到其 HTTP/1.1 标头大小的一半)。在这种大小下,a conditional requestLast-ModifiedETag)并不比再次发送有效负载快。

    这些缓存标头是您无法控制的,并且是为这些资源精心挑选的。 googleapis.com 知道它在做什么;您正在运行的性能测试提供了不适用于这种情况的一般建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-07
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多