在构建我们的网站时,我们发现加载网页字体显着减慢了手机页面渲染速度,因此我们在较小的设备上禁用了它们。我已经听说你可以通过在HTML5本地存储中保存Web字体来解决这个问题。在Guardian工作的朋友告诉我他们的mobile site将它的字体保存为本地存储的base64编码字符串。在HTML5本地存储中保存CSS网页字体
我可以很容易地理解如何保存字体,但我试图找出将它加载到浏览器中的最佳方式,当我检索它时。使用Javascript,我可以将base64字符串附加到页面头部的样式标签中,但是当我需要小心页面权重时,我会添加到每个页面的数据大小。有没有更有效的方式来加载字体CSS的声明?例如,如果它在一个单独的CSS文件中,浏览器将缓存它。
编辑---------------------------------------------
我已经想出了这个例子。如果设备有一个小屏幕,我检查localStorage的字体数据。如果它不存在于localStorage中,我做一个ajax请求,将数据追加到我的页面头部并存储在localStorage中。如果它确实存在,我只是追加它。这看起来像是一种在移动设备上加载Web字体的有效方式吗?
$(document).ready(function() {
if ($(window).width() < 481) {
if (typeof(Storage) !== 'undefined') {
if (localStorage.getItem('base64fonts') === null) {
$.ajax({
url: 'fonts-base64.css',
success: function(response){
$('head').append('<style>' + response + '</style>');
localStorage.setItem('base64fonts', response);
},
dataType: 'text'
});
} else {
$('head').append('<style>' + localStorage.getItem('base64fonts') + '</style>');
}
}
}
})
检查了这一点http://www.sencha.com/learn/taking-sencha-touch-apps-offline/ – wandarkaf 2013-06-19 10:41:44