我正在使用WinJS Windows Metro应用程序,在我的某个页面上,我获取了一个图像的URL以显示为背景。我可以通过使用url(图像的URL)并将其设置为style.backgroundImage来使其正常工作。
我需要在链接页面上使用相同的图像,但这意味着我必须发出另一个HTTP请求,我试图避免这种情况。我查看了替代方案,并找到了LocalFolder作为选项。唯一的问题是我不知道如何访问该文件并将其设置为背景。
这是缓存数据以减少网络摄像头的正确方法吗?
以下是我使用的代码:
function saveBackground(url) {
localFolder.createFileAsync("background.jpg", Windows.Storage.CreationCollisionOption.replaceExisting).then(function (newFile) {
var uri = Windows.Foundation.Uri(url);
var downloader = new Windows.Networking.BackgroundTransfer.BackgroundDownloader();
var promise = downloader.createDownload(uri, newFile);
promise.startAsync().then(function () {
//set background here.
var wrapper = document.getElementById("wrapper").style;
localFolder.getFileAsync("background.jpg").then(function (image) {
console.log(image.path);
var path = image.path.split("");
var newLocation = [];
//This is just to make the backslashes work out for the url()
for (var i = 0; i < path.length; i++) {
if (path[i] != '\\') {
newLocation.push(path[i]);
} else {
newLocation.push('\\\\');
}
}
console.log(newLocation);
var newPath = newLocation.join("");
var target = "url(" + newPath + ")";
wrapper.backgroundImage = target;
console.log(wrapper.backgroundImage);
wrapper.backgroundSize = "cover";
});
});
});
}
答案 0 :(得分:0)
这取决于您要传输的图像类型以及这些图像的数量。如果只有一个图像而不是一个重图像(大约<5Mo),我建议您使用WinJS.xhr来下载数据,更重要的是它会在调用后立即下载数据。
BackgroundTransfer应该用于大型数据,例如视频,音乐,大型图像。
关于图像的缓存是的,你当然可以使用本地文件夹(你应该这样做)。
你应该看一下David Catuhe制作的这篇系列文章非常棒
希望得到这个帮助。