Css 使用@font-face会减慢加载时间。我可以强制客户端缓存字体吗?

Css 使用@font-face会减慢加载时间。我可以强制客户端缓存字体吗?,css,font-face,Css,Font Face,更新: 看起来报头请求信息是罪魁祸首。如何更改请求标头的max age属性?蒂亚 您好,我在一个网站上使用@font-face,我遇到了文本加载延迟(可能是因为每页都加载了字体)。我知道客户端必须下载一次字体才能正确显示,但是每一页 有没有办法强制浏览器缓存该文件?或者有没有其他方法可以加快字体的加载时间?(这是一个更适合发布的问题吗?) 提前谢谢。最糟糕的情况是,我会忍受延误,所以我不需要任何“起飞@font-face”的答案……;) 其他信息: 我已经在Mac和Windows(XP和7)

更新: 看起来报头请求信息是罪魁祸首。如何更改请求标头的max age属性?蒂亚


您好,我在一个网站上使用@font-face,我遇到了文本加载延迟(可能是因为每页都加载了字体)。我知道客户端必须下载一次字体才能正确显示,但是每一页

有没有办法强制浏览器缓存该文件?或者有没有其他方法可以加快字体的加载时间?(这是一个更适合发布的问题吗?)

提前谢谢。最糟糕的情况是,我会忍受延误,所以我不需要任何“起飞@font-face”的答案……;)

其他信息:

  • 我已经在Mac和Windows(XP和7)上的Safari(4)和Firefox(3.5RC1)中对此进行了测试
  • 我测试过的所有浏览器当前都设置为允许缓存(默认情况下是打开的)
  • URL不是动态的,它只是“/font/font.otf”
  • 字体URL是正确的,因为页面加载字体并正确显示,尽管比正常速度慢
  • 请求标头:

    缓存控制:最大年龄=0
    如果修改时间:星期三,2009年6月24日03:46:28 GMT
    如果不匹配:W/“484d9f2-a5ac-46d10ff2ebcc0”
    推荐人:
    用户代理:Mozilla/5.0(Macintosh;U;Intel Mac OS X 10_6;en us)AppleWebKit/530.13(KHTML,类似Gecko)版本/4.0 Safari/530.15

  • 响应标题:

    连接:保持活动状态
    日期:2009年6月25日星期四02:21:31 GMT
    Etag:“484d9f2-a5ac-46d10ff2ebcc0”
    保持活动状态:超时=10,最大=29
    服务器:Apache/2.2.11(Unix)mod_ssl/2.2.11 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635


您确定您的字体文件是可缓存的吗?就像其他静态内容一样,它们应该有很长的过期日期,并且它们的头应该配置为允许缓存它们。如果您在服务器场上托管字体,您需要确保在服务器场中的所有服务器上对etag头进行规范化…否则,对字体的后续请求可能会强制从其他服务器重新下载该字体,即使相同的数据已从其他服务器下载。

您决不能强制浏览器缓存某些内容,只能鼓励它。我想不出有什么理由不缓存具有正确expires头的字体文件,这就导致了:

  • 这是一个浏览器错误(你不能说是哪个浏览器)
  • 您的缓存控制头丢失或错误
  • 您的浏览器配置为不缓存任何内容(是否缓存图像?)
  • 您的字体URL是动态的,因此浏览器认为每个请求针对不同的资源
  • 字体面文件实际上丢失或URL拼写错误
  • 延迟不是字体下载造成的(您说过您认为这就是问题所在)
我想应该有更多的信息


编辑:设置缓存控制是特定于服务器和语言的事情。查看Apache中的缓存信息。

您能发布当前发送的请求字体的标题吗?谢谢您询问Matt,我已经添加了它。看起来最大年龄就是这个原因。如何将其更改为更长的持续时间?响应标题如何?这些都是相关的,如果不是更多的话。设置最大年龄是服务器和语言特定的事情。如果您在apache上看到mod_expiresK,我添加了响应头。我来看看mod_过期了。非常感谢。很好的评论,但是,这不是发生的事情,因为我不是在服务器场上托管文件。至于文件的头,是的,它们被配置为允许缓存,但我尝试“强制”缓存(因为文件永远不会更改)。除了允许缓存之外,请确保您有一个遥远的过期日期。我经常会在一些静态内容上启用缓存,但不会给它一个很长的过期日期…而且它会拒绝缓存(FireFox是最好的测试,因为它对缓存某些内容的确切标题过于挑剔…Opera要宽松得多,IE是不可预测的。)我会调查一下,确保我把它们弄好了。谢谢你的提醒!谢谢你的回复,我已经更新了帖子以反映你的一些观点。我还将更详细地查看缓存控制头信息,以确保我没有犯错误。我之所以认为这是一个下载问题,是因为当我在本地服务器上测试站点时(下载速度明显接近零),特殊字体会在正常时间加载(与常规文本相同)。