Css 使用@font-face会减慢加载时间。我可以强制客户端缓存字体吗?
更新: 看起来报头请求信息是罪魁祸首。如何更改请求标头的max age属性?蒂亚Css 使用@font-face会减慢加载时间。我可以强制客户端缓存字体吗?,css,font-face,Css,Font Face,更新: 看起来报头请求信息是罪魁祸首。如何更改请求标头的max age属性?蒂亚 您好,我在一个网站上使用@font-face,我遇到了文本加载延迟(可能是因为每页都加载了字体)。我知道客户端必须下载一次字体才能正确显示,但是每一页 有没有办法强制浏览器缓存该文件?或者有没有其他方法可以加快字体的加载时间?(这是一个更适合发布的问题吗?) 提前谢谢。最糟糕的情况是,我会忍受延误,所以我不需要任何“起飞@font-face”的答案……;) 其他信息: 我已经在Mac和Windows(XP和7)
您好,我在一个网站上使用@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
- 这是一个浏览器错误(你不能说是哪个浏览器)
- 您的缓存控制头丢失或错误
- 您的浏览器配置为不缓存任何内容(是否缓存图像?)
- 您的字体URL是动态的,因此浏览器认为每个请求针对不同的资源
- 字体面文件实际上丢失或URL拼写错误
- 延迟不是字体下载造成的(您说过您认为这就是问题所在)
编辑:设置缓存控制是特定于服务器和语言的事情。查看Apache中的缓存信息。您能发布当前发送的请求字体的标题吗?谢谢您询问Matt,我已经添加了它。看起来最大年龄就是这个原因。如何将其更改为更长的持续时间?响应标题如何?这些都是相关的,如果不是更多的话。设置最大年龄是服务器和语言特定的事情。如果您在apache上看到mod_expiresK,我添加了响应头。我来看看mod_过期了。非常感谢。很好的评论,但是,这不是发生的事情,因为我不是在服务器场上托管文件。至于文件的头,是的,它们被配置为允许缓存,但我尝试“强制”缓存(因为文件永远不会更改)。除了允许缓存之外,请确保您有一个遥远的过期日期。我经常会在一些静态内容上启用缓存,但不会给它一个很长的过期日期…而且它会拒绝缓存(FireFox是最好的测试,因为它对缓存某些内容的确切标题过于挑剔…Opera要宽松得多,IE是不可预测的。)我会调查一下,确保我把它们弄好了。谢谢你的提醒!谢谢你的回复,我已经更新了帖子以反映你的一些观点。我还将更详细地查看缓存控制头信息,以确保我没有犯错误。我之所以认为这是一个下载问题,是因为当我在本地服务器上测试站点时(下载速度明显接近零),特殊字体会在正常时间加载(与常规文本相同)。