我们的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. Android清除应用程序缓存清除提供程序也
- 5. 我的HTML5应用程序缓存清单是缓存一切
- 6. XBAP从应用程序清除缓存
- 7. HTML5应用程序缓存 - Javascript不能正常工作
- 8. 清除应用程序缓存清除徽章数
- 9. 清除无法使用.NET下载的应用程序缓存?
- 10. 如何清除Android应用程序缓存?
- 11. 如何清除Spotify应用程序的网络缓存
- 12. 如何清除iPhone应用程序缓存
- 13. 如何清除目标C中的应用程序缓存?
- 14. 如何清除应用程序缓存在android退出
- 15. 如何使用HTML5的应用程序缓存(appcache)来缓存动态页面?
- 16. 如何停止从外部应用程序缓存部分缓存或使用任务清除缓存
- 17. HTML5应用程序缓存:如何从定义清单的缓存中排除HTM文件
- 18. Angular 2与Html5应用程序缓存
- 19. Ttitanium webview和HTML5应用程序缓存
- 20. 如何在Firefox中禁用HTML5应用程序缓存专用
- 21. HTTP严格传输安全和HTML5应用程序缓存我们使用的HTML5应用程序缓存功能
- 22. HTML5网页应用程序设计:应用程序缓存
- 23. 如何在HTML5中实现应用程序内存缓存?
- 24. 如何使用CakePHP使用html5缓存清单?
- 25. Symfony2应用程序在缓存清除后不起作用
- 26. 清除应用程序上的绝对缓存关闭Ipad应用程序
- 27. 清除应用程序的缓存而无需强制关闭应用程序
- 28. Android中的PhoneGap应用程序未使用HTML5应用程序缓存
- 29. 是否有可能清除使用JavaScript的浏览器缓存?
- 30. 在iPad上缓存Javascript 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