Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
克服iOS PWA缓存上的50 MiB限制_Ios_Mobile Safari_Service Worker_Progressive Web Apps_Cacheapi - Fatal编程技术网

克服iOS PWA缓存上的50 MiB限制

克服iOS PWA缓存上的50 MiB限制,ios,mobile-safari,service-worker,progressive-web-apps,cacheapi,Ios,Mobile Safari,Service Worker,Progressive Web Apps,Cacheapi,我们正在为iOS设备构建一个渐进式web应用程序,我们知道Safari web浏览器施加的50 MiB缓存限制。当我们知道应用程序的服务人员可能需要缓存超过50个MiB的数据(如果我们包括所有静态资源)时,我们如何处理这一限制,视频和图片等。我们的第一选择是即使在缓存已满后仍保持应用程序脱机运行,如果这不可能,至少要防止用户脱机工作时应用程序中断 如果您能给出一个我们也可以在其他PWA中实现的通用答案,那就太好了。现在,您可以使用IndexedDB在Safari mobile上存储超过50 MB

我们正在为iOS设备构建一个渐进式web应用程序,我们知道Safari web浏览器施加的50 MiB缓存限制。当我们知道应用程序的服务人员可能需要缓存超过50个MiB的数据(如果我们包括所有静态资源)时,我们如何处理这一限制,视频和图片等。我们的第一选择是即使在缓存已满后仍保持应用程序脱机运行,如果这不可能,至少要防止用户脱机工作时应用程序中断


如果您能给出一个我们也可以在其他PWA中实现的通用答案,那就太好了。

现在,您可以使用IndexedDB在Safari mobile上存储超过50 MB的数据:

如果可用磁盘空间大小超过1GB,则默认限制为500MB;否则,它将是可用磁盘空间的一半


请使用此工具亲自查看:

至少从iOS 13开始,IndexedDB和cacheStorage都应具有1GB的统一配额。
请参阅以下WebKit更改:

您不应该这样做。存在限制的原因是:保存蜂窝数据的使用。50MB对于一个web应用来说是一个很大的数目;尝试通过压缩JS和CSS来优化您的网站文件,并使用图像和视频的网络优化版本。是的,您是对的,但如果离线保存数据是一项功能要求,该怎么办。比如说,如果我正在构建一个PWA版本的YouTube应用程序,它可以让用户离线保存视频供以后观看。你有没有找到解决方案?我需要超过50MB的离线应用程序,它还可以缓存视频/图片,在Android平板电脑上运行非常完美,但在Ipad上我们需要同样的功能。。。有什么办法可以解决这个问题吗?我认为这是苹果/谷歌阻止你用PWAs做任何你想做的事情的方式之一。也许你应该考虑本地应用程序包装你的网络应用程序,并让你访问一些真正的存储设备。我正在使用媒体(视频、音频、照片),我们需要在几个情况下缓存超过50MB。因此,使用IDB是正确的选择。您需要将媒体文件视为数据而不是页面。按照JSON形成API的方式对其进行分类。另外,不要忘记对缓存的所有内容应用TTL/无效规则。这样,您就可以控制ache失效,而不是操作系统。感谢您参考我的文章!我要指出的是使用IDB。