HTML5 web应用程序绕过浏览器权限,在所有主要浏览器(Safari/Firefox/Opera/Chrome/IE



我一直在玩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/并通过新的。

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

每个应用程序的临时存储限制为总池的20%,总池限制为可用磁盘空间的50%,因此Chrome永远无法填满磁盘。当你在本地磁盘上添加更多文件时,Chrome会相应地缩小分配给临时存储池的总数。

最新更新