HTML5网络应用程序绕过所有主要浏览器(Safari / Firefox / Opera / Chrome / IE)中本地缓存的浏览器权限?

时间:2012-07-13 17:35:22

标签: html5 caching google-chrome

我一直在玩HTML5离线应用程序缓存, 运行边界测试以研究边缘情况下的浏览器行为,特别是找出缓存配额。

所以我做的是生成并提供离线应用程序清单,并将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文件添加到缓存而不会崩溃

调查chrome:// appcache-internals /,我很震惊地看到了 一个单一的Web应用程序,有一个2.3GB的巨大缓存!!

我发现访问的网站正在下载,这真的很奇怪 背景中有如此多的数据,作为用户,它可以得到相当多的数据 令人不安。 Chrome,当时选择的桌面浏览器(17.0.963.83) 没有警告我或者我的许可,该网站想要下载和缓存 我本地存储空间的数据如此之多!这太离谱了。

由于上述关于浏览器范围的行为 超出配额,站点停止将数据提交到应用程序缓存。

浏览器是否有办法以更有条理的方式跟踪所有这些内容 方式?目前,“第一次浏览,第一次保留”非常烦人。我的经验 解决这种情况的方法是使用applicationCache API 侦听配额错误,并通知用户浏览 chrome:// appcache-internals /并删除其他缓存 新的那一个。

1 个答案:

答案 0 :(得分:2)

有关Chrome如何处理本地存储空间的更多信息,请查看此白皮书:https://developers.google.com/chrome/whitepapers/storage

临时存储空间限制为每个应用总池数的20%,总池数限制为可用磁盘空间的50%,因此Chrome无法填充磁盘。当您向本地磁盘添加更多文件时,Chrome将相应地缩减分配给临时存储池的总数。

相关问题