我一直在玩弄HTML5离线应用程序缓存, 运行边界测试以研究边缘情况下的浏览器行为,特别是要了解缓存配额。HTML5网页应用绕过所有MAJOR浏览器(Safari/Firefox/Opera/Chrome/IE)中本地缓存的浏览器权限?
因此,我所做的是生成并提供脱机应用清单,并将300个5MB JPEG文件添加到缓存中。
public ActionResult Manifest()
{
var cacheResources = new List<string>();
var n = 300;
for (var i = 0; i < n; i++)
cacheResources.Add("Content/" + Url.Content("collage.jpeg?" + i));
var manifestResult = new ManifestResult("1")
{
NetworkResources = new string[] { "*" },
CacheResources = cacheResources
};
return manifestResult;
}
在开始的时候,我加入1000个的JPEG文件到缓存中,Chrome的扔了一个错误: 它无法提交新的缓存来存储因超出配额。
我设法慢慢地减少我上传的图片, 我可以300个JPEG文件添加到缓存的数量来得到正确的数量没有崩溃它
调查铬://应用程序缓存,内部/,我是震惊地看到,对于 单一的Web应用程序,有一个2.3GB的巨大缓存!
这真的很奇怪,发现我访问的网站正在下载 这么多的数据在后台,作为一个用户,它可以得到相当 令人不安。 Chrome浏览器(17.0.963.83),当时选择的桌面浏览器 没有警告我或要求我的许可,该网站想要下载并缓存我的本地存储中的大量数据!这是非常无耻的。
由于前面提到的超过浏览器范围 配额的行为,站点会停止将数据提交到应用程序缓存。
浏览器是否有一种方式来跟踪更有组织的 方式中的所有这些?目前,“第一次浏览,第一次保留”是相当烦人的。我的经验 解决这种情况是使用applicationCache API到 监听配额错误,并通知用户浏览到 chrome:// appcache-internals /并通过 删除其他缓存中的新缓存。
thx散装!如何处理其他浏览器,如IE/Firefox/Opera?这是否意味着我必须创建新的功能来处理每个案例,还是有一个总体的方法? – bouncingHippo 2012-07-18 17:32:35