我們的Web應用程序使用應用程序緩存(緩存清單)以離線模式恢復HTML頁面和資源。 HTML頁面具有會話ID作爲URI中的參數。因此,在每次註銷和登錄操作之後,新的HTML頁面將保存到應用程序緩存中,因爲sessionId已在URI中更改。經過幾周的應用程序處理後,一些瀏覽器開始工作變慢。應用程序緩存的大小(在FF 3.6+上測試)大約爲200Mb!每次註銷後,我們會清除瀏覽器的LocalStorage,但是如何清除應用程序存儲中的資源?如何使用JavaScript清除應用程序緩存(HTML5功能)?
回答
應用程序緩存佔用了太多空間的問題是您每次都要爲用戶代理提供不同的脫機Web應用程序。一個離線的網絡應用程序是identified to the user agent by the URI of the cache manifest file,,包括查詢字符串 - 而不是您可能認爲的主文件的URI。
因此,通過將會話ID包含在緩存清單URI中,您告訴瀏覽器每個會話都會獲得自己的全新應用程序,而無需使用任何先前下載的應用程序(因此,永遠無法清除它們出)。您每次都安裝不同的Web應用程序。
重新考慮您如何構建您的應用程序,因爲目前使用HTML5脫機緩存清單提供的值爲否值 - 僅導致過度下載。 Web應用程序鼓勵的架構是靜態提供所有HTML,並通過AJAX提取需要會話的數據。當構建經典的「動態生成帶有服務器數據的HTML頁面」範例時,Web應用程序不起作用。
我不確定你是否可以控制JavaScript的應用程序緩存。這是清除緩存時應由瀏覽器和用戶處理的內容。
主要問題是,使用我們的Web應用程序的用戶無權使用瀏覽器的標準方法從瀏覽器中清除緩存。設備(操作系統,瀏覽器)非常有限,瀏覽器選項僅限於它們 – SAHbKA 2011-04-29 08:15:37
也許以下擴展可能有所幫助? http://sites.google.com/site/keigoattic/home/webrelated#TOC-Firefox-HTML5-Offline-Cache-and-Loc – jonjbar 2011-04-29 09:23:21
您可以通過JavaScript手動觸發更新,但僅此而已:http:// www.whatwg.org/specs/web-apps/current-work/multipage/offline.html#applicationcache – Stoive 2011-04-29 12:59:36
- 1. 通過javascript清除並更新html5應用程序緩存
- 2. HTML5應用程序清單不清除緩存清單更改
- 3. 如何清除UIWebView的HTML5應用程序緩存
- 4. ASP.NET應用程序要怎麼做才能清除JavaScript緩存
- 5. 在HTML5應用程序緩存項的選擇性清除
- 6. Android清除應用程序緩存清除提供程序也
- 7. 我的HTML5應用程序緩存清單是緩存一切
- 8. XBAP從應用程序清除緩存
- 9. 應用程序緩存html5
- 10. 使用JavaScript清除功能
- 11. HTML5應用程序緩存 - Javascript不能正常工作
- 12. 清除應用程序緩存清除徽章數
- 13. 如何清除Spotify應用程序的網絡緩存
- 14. 如何清除Android應用程序緩存?
- 15. 如何清除應用程序緩存在android退出
- 16. Android:如何同時清除所有應用程序的緩存
- 17. 如何清除目標C中的應用程序緩存?
- 18. 如何清除Android中另一個應用程序的緩存?
- 19. 如何清除「應用程序緩存」中鉻iPad上
- 20. 如何清除iPhone應用程序緩存
- 21. 如何清除MonkeyRunner應用程序緩存?
- 22. 如何使用HTML5應用程序緩存保留SSL
- 23. 清除無法使用.NET下載的應用程序緩存?
- 24. HTML5 Boilerplate .htaccess緩存清除不能與WordPress配合使用
- 25. 如何使用HTML5的應用程序緩存(appcache)來緩存動態頁面?
- 26. 如何停止從外部應用程序緩存部分緩存或使用任務清除緩存
- 27. 通用Windows應用程序Webview內存泄漏 - 清除緩存
- 28. HTML5應用程序緩存:如何從定義清單的緩存中排除HTM文件
- 29. html5應用程序緩存清單文件進度錯誤
- 30. HTML5應用程序緩存清單文件擴展名
你說'新的HTML頁面被保存到應用程序緩存' - 這看起來不正確?瀏覽器整體處理應用程序緩存,因此無法自動將頁面添加到應用程序緩存。你能澄清一下嗎? – Stoive 2011-04-29 07:45:39
我使用「mysite.com/?SID=123456&a=1 mysite.com/?SID = 123456」方式使用緩存清單的回退部分,因此,靜態頁面將被下載並保存到緩存中。每個Logout/login都會生成新的sessionId,導致存儲新的靜態頁面。 – SAHbKA 2011-04-29 09:44:27
應用程序緩存中的內容不應更改每個會話,如果它將要更改,那麼將其存儲爲脫機使用的意義何在?將靜態內容放入應用程序緩存中,使用本地存儲和AJAX加載會話特定數據,以便您可以通過JavaScript控制它。 – robertc 2011-04-29 10:11:32