我一直在玩弄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