2015-11-24 15 views
0

我能够缓存本地文件(图像,js等)完美无瑕。我可以从HTML5应用程序缓存中加载网络资源吗?

理想情况下,我希望能够指向存储在Azure上的blob存储中的远程资源,如.mp4,并缓存该资源。那可能吗?

我在日志中没有看到任何错误,但我也没有看到它正在被下载,因为它在Chrome浏览器 - >资源面板下的应用程序缓存中不可用。

我的清单:

CACHE MANIFEST 
# Init 11-24-15 
index.html 

### Images 
img/Night-Trap-32x-Front.jpg 
/img/icons/Bathroom.jpg 
/img/icons/Bedroom.jpg 
/img/icons/Driveway.jpg 
/img/icons/Entry-Way.jpg 
/img/icons/Hall-1.jpg 
/img/icons/Hall-2.jpg 
/img/icons/Kitchen.jpg 
/img/icons/Living-Room.jpg 
/img/icons/trap-icon.gif 

img//stills/BATHROOM_1.jpg 
img//stills/BEDROOM_1.jpg 
img/stills/DRIVEWAY_1.jpg 
img/stills/ENTRY-WAY_1.jpg 
img/stills/HALL-ONE_1.jpg 
img/stills/HALL-TWO_1.jpg 
img/stills/KITCHEN_1.jpg 
img/stills/LIVING-ROOM_1.jpg 

### JS 
js/vendor/bootstrap.min.js 
bower_components/video.js/dist/video.js 
js/vendor/mainloop/mainloop.js 
bower_components/object.observe/dist/object-observe-lite.min.js 
js/appCacheValidation.js 


# THESE DO NOT SEEM TO BE CACHED 
https://nighttrapblob.blob.core.windows.net/ntvids/hallOne/00000021.mp4 
https://nighttrapblob.blob.core.windows.net/ntvids/hallOne/00130422.mp4 
https://nighttrapblob.blob.core.windows.net/ntvids/hallOne/01152221.mp4 
https://nighttrapblob.blob.core.windows.net/ntvids/hallOne/02500221.mp4   
https://nighttrapblob.blob.core.windows.net/ntvids/bedroom/00000081.mp4 

NETWORK: 
* 

这就是我如何保持一个记录正在发生的事情:

// App cache validation 
var appCache = window.applicationCache; 

if (appCache === null || undefined) { 
    console.log("App cache does not exist"); 
} 

appCache.addEventListener('checking', function(event) { 
    console.log("Checking for updates."); 
}, false); 

appCache.addEventListener('error', function(event) { 
    if (navigator.onLine === true) { //If the user is connected to the internet. 
     //alert("Error - Please contact the website administrator if this problem consists."); 
     console.log("Error - Please contact the website administrator if this problem consists."); 
    } else { 
     //alert("You aren't connected to the internet. Some things might not be available."); 
     console.log("You aren't connected to the internet. Some things might not be available."); 
    } 
}, false); 

appCache.addEventListener('downloading', function(event) { 
    console.log("Started Download."); 
}, false); 


appCache.addEventListener('progress', function(event) { 
    console.log(event.loaded + " of " + event.total + " downloaded."); 
}, false); 

appCache.addEventListener('cached', function(event) { 
    console.log("Cached assets -- Done."); 
}, false); 

appCache.addEventListener('updateready', function() { 
    console.log("New resources are available for download -- update ready"); 
}, false); 

appCache.addEventListener('obsolete', function(event) { 
    console.log("Obsolete - no resources are cached, and previous cache(s) are now deleted."); 
}, false); 

回答

0

我解决它。玩了一下狩猎,但在这里你去:

你可以通过类似的web作业应用缓存控制容器中的所有斑点。 This Stack Overflow post有一个很好的例子,说明如何做到这一点,并且由两个步骤组成:

  1. 从同一个数据中心中的辅助角色运行操作。 Azure服务之间的速度很快,只要它们位于相同的关联组中。另外,没有数据传输成本。
  2. 并行运行操作。 .net v4中的任务并行库(TPL)使这非常简单。以下是为容器中的每个blob并行设置缓存控制标头的代码。 此外,你可以使用一个工具,如莓资源管理器,它支持的Cache-Control

我只是想测试这一点上的影片屈指可数,安全自己不得不创建一个脚本的时间,所以一步一个脚印在这里。我只是登录到Azure门户,去我的BLOB存储容器中找到我正在服务的.mp4s,并且必须单独编辑它们。我点击每个视频,编辑属性,然后设置Cache-Control属性的值。 (例如public,max-age = 300000),其中max-age指定表示将被视为新鲜的最大时间量。

Alexander Brisebois对其博客中可用于缓存控制的不同属性进行了很好的概述。

相关问题