在構建我們的網站時,我們發現加載網頁字體顯着減慢了手機頁面渲染速度,因此我們在較小的設備上禁用了它們。我已經聽說你可以通過在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