2013-06-28 2 views
0

Что является ЛУЧШИМ ПУТЕМ для загрузки 100 + шрифтов на веб-страницу для просмотра. У меня небольшая компания, и мне нужен онлайн-пользователь, чтобы иметь возможность увидеть ИХ ТАМОЖЕННЫЙ ТЕКСТ в шрифте THEIR CHOICE. У большинства из них не будут установлены эти шрифты. Большое спасибо. Я знаю о шрифте @ font-face и local, но я искал более быстрый и короткий путь. Может быть, используя переменную, прошедшую из значения окна выбора?Мне нужно загрузить 100 шрифтов на мою веб-страницу для просмотра

ответ

1

Не загружайте их все одновременно. Используйте XmlHttpRequests для загрузки шрифтов по требованию.

Если вы АБСОЛЮТНО ДОЛЖНЫ загрузить все шрифты, а затем base64 закодировать их в CSS файл fonts.css затем служить CSS файлы архивированными ...

А если серьезно, вы не должны делать последний.

0

Создание изображений на сервере. Тогда клиентский ПК может пережить вашу страницу. Или нет.

Почему вы не используете разбивку на страницы и показываете только 10 одновременно?

0

Вот частичное решение, я не тестировал шрифты. Идея состоит в том, что есть две страницы, например, страница всплеска и реальная страница. На странице всплеска вы загружаете все свои статические изображения, шрифты и т. Д., Создавая поддельные теги IMG на странице. Затем файлы находятся в кеше. Когда вы просматриваете свои файлы, загружаете их вниз, пауза между ними, чтобы свести к минимуму вероятность блокировки пользовательского интерфейса. Это стратегия, которую я планировал использовать для файлов javascript, но должен работать с другим статическим контентом.

//Load but doesn't execute. Gets the file into the local cache. 
var preload; 
if (/*@[email protected]*/false) 
{ 
    preload = function (file) 
    { 
     new Image().src = file; 
    }; 
} 
else 
{ 
    preload = function (file) 
    { 
     //it really is an object 
     var obj = document.createElement('object'), 
      body = document.body; 
     obj.width = 0; 
     obj.height = 0; 
     obj.data = file; 
     body.appendChild(obj); 
    }; 
} 

function preloadAll(urls) 
{ 
    processArray(urls, preload 
    //omit optional callback 
    ); 
} 

function processArray(items, process, callback) 
{ 
    var todo = items.concat(); //create a clone of the original 
    setTimeout(function() 
    { 
     process(todo.shift()); 
     if (todo.length > 0) 
     { 
      setTimeout(arguments.callee, 100); 
     } else 
     { 
      if (typeof callback === 'function') 
      { 
       callback(items); 
      } 
     } 
    }, 100); 
}