2013-02-14 41 views
6

我正在构建一个特别针对显示公司产品集合的iPad(运行iOS 6+)的网络应用程序。iOS6网络应用程序的最大缓存大小是多少?我如何扩展它?

这一切都非常完美使用HTML5的“cache.manifest”文件。但是由于缓存已经增长到大约50MB,iPad不再保存应用程序数据。根据Safari设置,缓存大小现在不是50MB,而是0.1KB。

那么,什么是Safari浏览器的缓存的Web应用程序的实际限制,是有办法扩大了应用程序缓存的最高金额是多少?

+0

检查了这一点: http://stackoverflow.com/questions/2772908/max-size-ipad-iphone-offline-application-cache – mattdlockyer 2013-02-18 01:21:25

回答

12

编辑2014年6月2日: 上iOS7.1最大高速缓存大小为300MB。

最近有客户问我这个确切的问题,所以我调查了一下。

按iOS6的,这是两个不同的东西(我所有的测试已在iOS6.1完成):

  • 使用.manifest的网站,与移动Safari浏览器
  • 访问主屏幕上的网络应用程序,从网站创建

带有.manifest的网站最多可以使用50MB的缓存,并提供用户权限。它不能使用更多。该值可以在设置/ safari/advanced中找到并清除。如果您尝试在缓存中填充更多内容,则error事件将触发,并且window.applicationCache.status将变为空闲状态。

web应用程序不共享比其网站上相同的缓存。清除缓存设置/ safari/advanced将无法为您的主屏幕webapp做任何事情。它将接受超过50MB的缓存,无需用户输入,但我不知道究竟有多少(我以60mb成功完成测试,完全可以脱机访问。*编辑:试用83mb,成功) 我不知道这里数据可以在iOS设置中看到。我猜没有。

测试,这是在一个痛苦***,直到我找到了spec。有一个API可以在iOS6上完美运行。
您应该检查window.applicationCache.status,它告诉你什么是应用程序的状态,以下事件(切,并与他们的听众从我的代码粘贴,这样):

window.applicationCache.addEventListener('checking', onChecking); 
window.applicationCache.addEventListener('noupdate', onNoupdate); 
window.applicationCache.addEventListener('downloading', onDownloading); 
window.applicationCache.addEventListener('progress', onProgress); 
window.applicationCache.addEventListener('cached', onCached); 
window.applicationCache.addEventListener('updateready', onUpdateready);  
window.applicationCache.addEventListener('obsolete', onObsolete); 
window.applicationCache.addEventListener('error', onError); 

所有正在从事的iOS 6.1,甚至progress事件event.loadedevent.total

如果.manifest是相同的,则Web应用程序首先检查,然后触发noupdate。状态是IDLE

如果.manifest的改变,地位DOWNLOADING,对于您的清单每个文件progress事件触发,那么状态为UPDATEREADYupdateready火灾。

如果您在离线状态下,一个error事件触发和状态是IDLE

您可以

var online = navigator.onLine ? 'online' : 'offline'; 

它的工作原理,但规格说,这是不可靠的测试的在线/离线状态。

三件更多的事情来完成:

  • 我的清单被命名为cache.manifest和声明如下<html manifest="cache.manifest">
  • 我的.htaccess已经AddType text/cache-manifest manifestExpiresByType text/cache-manifest "access plus 0 seconds"
  • 我的应用程序有<meta name="apple-mobile-web-app-capable" content="yes">

使用此API,可以更轻松地了解底层的情况。一定要做你自己的测试,但我不是100%肯定这个结果,或者他们可以用一个新的iOS版本。我会进一步测试最大尺寸。

+0

感谢您的明确的解释!我将在今天晚些时候或明天晚些时候尝试。 – Jules 2013-02-20 14:44:11

+0

看来,Web应用程序(当它在主屏幕中)只是第二次缓存。错误事件第一次触发时,第二次缓存事件成功触发!谢谢你的帮助。 – Jules 2013-02-21 13:07:42

相关问题