【问题标题】:HTML cache manifest and dynamically loaded imagesHTML 缓存清单和动态加载的图像
【发布时间】:2018-04-02 09:12:48
【问题描述】:

我有一个具有离线功能的网络应用程序。 我设法使清单与所有必需的资产一起正常工作; css、js和图片。

但是我使用 angular 从服务器获取用户生成的图像列表,方式类似:

$scope.images = angular.fromJson(localStorage.getItem('images')) || []

$http
.get('/my-rest-endpoint')
.then(function(res){
    $scope.images = res.data
    localStorage.setItem('images', angular.toJson(res.data))
}).catch()

即使用户离线,我也使用 localStorage 来保留列表, 但是我希望将这些图片包含在我的离线缓存中... 知道如何实现这一目标吗?

奖金:

将来可能还会有视频文件。遇到这种情况怎么办?

【问题讨论】:

    标签: javascript html angularjs caching


    【解决方案1】:

    这是众多离线挑战之一。您的选择是:

    1) 将图片路径添加到 manifest.appcache

    动态生成您的manifest.appcache,插入对您要离线的图像的引用。您可以使用appcache-nanny 来检查更新。

    2) 将图片存储在 localStorage

    这对于一些图像可能没问题,但请记住,localStorage 容量范围为 2.5mb 到 10mb,具体取决于设备/浏览器,因此排除了视频。

    3) 将 localForage 与离线提取一起使用

    localForage 是 IndexedDB/WebSQL 的包装器,可以为您提供高达 50mb 的客户端存储空间。 offline-fetchfetch 的包装器(XMLHttpRequest 替换)

    如果您使用配置为使用localForageoffline-fetch 请求图像,它会在检测到应用离线时从磁盘提供图像意味着通过JS 加载图像而不是 img src 属性。

    【讨论】:

    • 如何动态生成 manifest.appcache?我想缓存包含数组中图像路径的 ajax 响应,但我不知道文件名。无论如何我都想缓存它们。如何动态生成 manifest.appcache?
    • appcache 清单应该只用于加载应用程序外壳所需的静态资源。我创建了 offlineFetch 来缓存 ajax 请求,这意味着我的应用程序所要做的就是使用这个包装器请求资源,它会处理其余的
    猜你喜欢
    • 2011-04-12
    • 2013-06-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    相关资源
    最近更新 更多