Кэширование в silverlight приложении

Один и тот же ресурс может понадобиться в одном приложении несколько раз: при создании навигации по приложению, для отображения в различных участках в рамках одного проекта, для придания целостности (например, используя один и тот же файл шрифта), да и ещё много для чего. Используя silverlight объект 'downloader', можно заставить ваше приложение брать уже скачанные файлы, но необходимые снова, из кэша браузера. Это экономит трафик пользователей и снижает нагрузку на сервер. Рассмотрим небольшой пример. Добавим к стандартному JS файлу, создаваемому автоматически, глобальную переменную cached_downloader (это важно, так как при использовании локальной переменой, cached_downloader уничтожается после выполнения функции и кеширования не происходит) и назначим его инициализацию по событию onLoad плагина. В данном случае объектом для скачивания является файл шрифта, который затем назначается TextBox'у в функции handleDLComplete.

var cached_downloader; 
var slControl; 
function createSilverlight() 
{  

    Silverlight.createObjectEx({ 
        source: "Page.xaml", 
        parentElement: document.getElementById("SilverlightControlHost"), 
        id: "SilverlightControl", 
        properties: { 
            width: "100%", 
            height: "100%", 
            version: "1.0"
        }, 
        events: { 
            onLoad: handleLoad 
        } 
    }); 
}  

if (!window.Silverlight) 
    window.Silverlight = {};  

Silverlight.createDelegate = function(instance, method) { 
    return function() { 
        return method.apply(instance, arguments); 
    } 
} 
function handleLoad(control, userContext, sender) 
    { 
        slControl=control; 
        cached_downloader = control.createObject("downloader"); 
        cached_downloader.addEventListener("completed", 
   "handleDLComplete"); 
        cached_downloader.open("GET","myfont.ttf"); 
        cached_downloader.send();  

    }  

function handleDLComplete(sender,args) 
{ 
    var tb = sender.findName("txtChinese"); 
    tb.setFontSource(cached_downloader); 
    tb.fontFamily="myfont family"; 
}

Если на следующей станице вам вновь понадобится этот шрифт, то можно использовать идентичный JavaScript-код для загрузки, но при инициализации этого и последующих запросов, шрифт уже будет загружен не с сервера, а из кэша браузера.

Posted on 28.10.2007 16:42:34 by Admin

Permalink | Комментарии (0) | Post RSSRSS comment feed |

Categories: Silverlight

Tags: ,

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Похожие записи

Добавить комментарий


(Отображает Gravatar)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Предпросмотр

ноября 21. 2008 00:52